素人のpython勉強日記(関数を使った処理のカプセル化)
京大のPython講義のテキストをなぞっていきます。その中で気になったところつまずいたところをメモ
- 関数を使った処理のカプセル化
・関数を定義する。引数(ひきすう)という読み方すら知らなかった。。
・関数名を決める、そのあとに関数の処理内容を決める
・仮引数は関数定義で記載される変数、実引数は代入される(時に使用される)値
・処理結果はreturnで示す(戻り値)。returnは関数の処理を終了する
「7.7 関数 square_root() を実装する」のプログラム 7-3を試してたらテキストと違う結果が出た。
# def square_root(x): '引数 x の平方根を求める' rnew = x # diff = rnew - x/rnew if diff < 0: diff = -diff while (diff > 1.0E-6): r1 = rnew r2 = x/r1 rnew = (r1 + r2)/2 print(r1, rnew, r2) diff = r1 - r2 if diff < 0: diff = -diff return rnew # ここからメインプログラム v = 2 r = square_root(v) print("結果は ", r)
で出力はこうなった
================== RESTART: E:/Document/python script/p7-3.py ================== 2 1.5 1.0 結果は 1.5 >>>
繰り返しが実行されてない…・なおreturn rnewのインデントがミスってて正しくはこう。
(略) while (diff > 1.0E-6): r1 = rnew r2 = x/r1 rnew = (r1 + r2)/2 print(r1, rnew, r2) diff = r1 - r2 if diff < 0: diff = -diff return rnew
どうやらreturnは関数の処理を終了させるらしい。今回while文中に記載しちゃったので繰り返さずに終わってしまった模様