#author("2018-10-20T18:17:01+09:00","default:takataka","takataka")
#author("2018-10-22T13:02:44+09:00","default:takataka","takataka")
*応用プログラミング及び実習 2018年度 第5回 [#ex05]

//&color(#ff0000){工事中};

#contents

** 今日の notebook [#c5575be4]

は [[AProg/2018]] からたどってください.
Notebook の扱いが分からないというひとはこちら: [[AProg/2018/ex01/Step1#step1_3]]


**課題A (self) 期限: 授業当日11:45 [#kadaiA]

今日の notebook を開いてそこに記されたことを読んで&実行して学習しなさい.
完了したらチェックを受けなさい(notebookを開いたままにしておくこと).
**課題B (self) 期限: 当日の授業終了まで [#kadaiB]


[[05exB.ipynb>AProg:05exB.ipynb]] ([[05exB.html>AProg:05exB.html]])

上記リンク先の Jupyter Notebook を開いてその指示にしたがいなさい.
完了したらチェックを受けなさい.


**課題C (TA) 期限: 次回2講時開始直後 [#kadaiC]
//&color(#ff0000){工事中};

2018年度「[[プログラミング及び実習>https://www.math.ryukoku.ac.jp/~qma/education/cpro/index.html]]」総合演習問題(6)

>
文字列を入力したら、単語内の文字をひっくり返して出力してくれるプログラムを作成しなさい。
~ 例: sihT si a .nep → This is a pen.
<

を(そのプラスアルファを)Pyton でやってみよう.

''Python に標準で備わっている機能を自分で調べながらプログラムを作っていく''練習をしてほしいので,次の指示にしたがって進めてください.

***step1 [#h304f948]

以下のような文字列を空白・タブ・改行を区切りとして分割し,分割された文字列たちを要素にもつリストを作る方法を調べる.

 S1 = "    ぼく    ほげお       \tほげ ほげ〜\n”

教科書やウェブで情報を得ながら,ipython 上で手動でコードを実行してみよう.

***step2 [#wdc5c62b]

文字列のリストを指定の文字列を使って連結する方法を調べる.step1 同様 ipython 上でコードを実行しながらやろう.

 L2 = ["あ", "いう", "えおか", "きくけこ”]

上記の L2 が対象の場合,
- スペース1文字を区切りとして連結した後の文字列は 
 'あ いう えおか きくけこ’
- "***" が区切り文字列なら
 'あ***いう***えおか***きくけこ’
- “ほげ” なら
 'あほげいうほげえおかほげきくけこ'

***step3 [#ieb286e7]

step1, 2 の技を組み合わせれば,
 S1 = "    ぼく    ほげお       \tほげ ほげ〜\n”
から
 "ぼく ほげお ほげ ほげ〜"
を作ることができるはずですね.やってみよう.

***step4 [#q12e9cea]

文字列を受け取ってそれを逆順にしたものを返す関数を作ろう.名前は reverseWord としよう.
例えば
 reverseWord("ほげ")
の戻り値は "げほ" であり,
#pre{{
for s in L2:
     print(reverseWord(s))
}}
の実行結果は
#pre{{
あ
うい
かおえ
こけくき
}}
となる.

ちなみに,ipython 上では,次のようにして関数定義を書けます(for文などのインデントブロックも同様).
#pre{{
In [1]: def hoge(x):      これを書いて Enter 押すと,
   ...:     print(x)             次の行に ...: と出てきて入力待ちになるのでそのまま中身を書く
   ...:                              中身書き終わったら何も書かず Enter

In [2]: hoge(4649)
4649
}}

***step5 [#k165b700]

文字列を要素とするリストの要素をいじる話.こういうことしたら L2 の内容はどうなるか観察しよう.
 L2[2] = L2[2]*2

***step6 [#ga0765ce]

これまでの技を組み合わせれば,文字列 S1 に対して目的の処理をすることができるはず.
ipython 上で手動でやってみよう.うまくてきたら,他の例も作って試してみよう.

さらに,実行した手順(関数 reverseWord() の定義も)を 05exC.py というファイルに書いて
 $ python 05exC.py
で確認できるようにしよう(print関数で文字列の内容を表示させたらよい).

***step7 [#mb17094c]

05exC.py に,次のような関数 reverseSentence() の定義を書こう.
- 関数名は reverseSentence
- 引数は1つ(文字列),戻り値は文字列
- 実行例(1)
 S1 = "    ぼく    ほげお       \tほげ ほげ〜\n”
 R1 = reverseSentence(S1)
 print(R1)
 くぼ おげほ げほ 〜げほ
- 実行例(2)
 print(reverseSentence("sihT si a .nep"))
 This is a pen.

***step8 [#pcb89283]

05exC.py の末尾に,次のようなコードを挿入して実行しよう.ファイル 05msg.txt はこちら.[[05msg.txt>AProg:05msg.txt]]
#pre{{
fn = "05msg.txt"
with open(fn, "r") as f:  # ファイル名 fn のファイルを読み込みモードで開く
    for line in f:        # ファイルから1行ずつ読み込んでループ
        print(line)       # そのまま表示(lineの末尾に改行が入ってるので...)
}}

上記の for 文の中を修正して,読み込んだファイルの内容を逆順にして出力(各行の文字列を空白等で区切ってそれぞれ逆順に)するプログラムを作りなさい.
上記の for 文の中を修正して,読み込んだファイルの内容を逆順にして出力(各行の文字列を空白等で区切ってそれぞれ逆順に)するプログラムを作りなさい.関数 reverseWord(), reverseSentence() を使うこと.

&size(8){なんかのりでほげおに新たな設定が爆誕...};
**課題S (omake)  [#kadaiS]

//&color(#ff0000){工事中}; 

''データ分析してみよう〜主成分分析''

[[05exS.ipynb>AProg:05exS.ipynb]] ([[05exS.html>AProg:05exS.html]])

&size(8){takatakaの趣味に走ったまにあっくな課題になってしまいました...};

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS