ナポリタンエンジニア

ジュノベーゼよりは好かれたい。

素人のpython勉強日記(関数を使った処理のカプセル化)

京大のPython講義のテキストをなぞっていきます。その中で気になったところつまずいたところをメモ

  1. 関数を使った処理のカプセル化

・関数を定義する。引数(ひきすう)という読み方すら知らなかった。。

・関数名を決める、そのあとに関数の処理内容を決める

・仮引数は関数定義で記載される変数、実引数は代入される(時に使用される)値

・処理結果は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文中に記載しちゃったので繰り返さずに終わってしまった模様