whileでループさせると、どんな風に動くのか検証してみた。
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となる 。
別の解として、こんなコードも考えてみたわ。
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の合計なんて、もっとよい関数あるだろって意味では間違いかもしれない。
そういうものだろう。