今さらPython

whileでループさせると、どんな風に動くのか検証してみた。

1から10までの合計

コード

str = "経過"
i=0
n=0
while i<10:
   i=i+1
   n=n+i
   print(str,i,":",n)
str = "合計"
print(str,n)

実行

illyasviel@lucifer35:~$ python3 hello.py 
経過 1 : 1
経過 2 : 3
経過 3 : 6
経過 4 : 10
経過 5 : 15
経過 6 : 21
経過 7 : 28
経過 8 : 36
経過 9 : 45
経過 10 : 55
合計 55
illyasviel@lucifer35:~$ 

whileループは、whileの後ろに書かれている値が『真』である限り回り続ける
例題の場合、iが1ずつ増えていくので、0〜9まで実行され、10になった(真(true)→偽(false))時点でループからぬけて次へ行く。
iを増やしてからnに足しているので、 nには1から10まで順番に足されて いき 当然、結果は55となる

別の解として、こんなコードも考えてみたわ。

コード2

str = "経過"
n=0
for i in range(10):
   n=n+i+1
   print(str,i,":",n)
str = "合計"
print(str,n)

range(10)すると10回実行してくれるけど、変域が1〜10でなく0〜9になっちゃう。だから余計に+1ずつ足していく必要があるわね。

実行

経過 0 : 1
経過 1 : 3
経過 2 : 6
経過 3 : 10
経過 4 : 15
経過 5 : 21
経過 6 : 28
経過 7 : 36
経過 8 : 45
経過 9 : 55
合計 55

学校なんかでどういう評価をするのか知らないけど、これはどちらでも正解であり間違いと言える。
要は答えが出ればいい わけで、ロジックも同じなら、あとは好きにすればいいという意味では正解かもしれない。
効率なりなんなりを追求するなら、そもそも1〜10の合計なんて、もっとよい関数あるだろって意味では間違いかもしれない。
そういうものだろう。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-06-25 (土) 08:16:07