- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Pythonでwhileがうまく動きません。)
Pythonのwhileループがうまく動作しない
このQ&Aのポイント
- 初心者がPythonでwhileループを使用しているが、うまく動作しない。
- 実行したプログラムでは、whileループが予想に反して終了しない。
- 同じプログラムを他の環境で試しても同様の結果が得られる。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Pythonの場合だと、インデント無しだとコードが良く分からなくなるんですよね。 恐らくこう言うコードでしょう。 total = 0 a = 1 while total <= 50: print(a) total = total + a a = a + 1 print(total) print(a)はwhileブロックに入っていますが、print(total)はwhileブロック外にありませんか? aの初期値は1、そしてwhileブロック内で1づつ加算されていきますよね。 つまりprint(a)が出す情報は 1, 2, 3, 4, ・・・・・・ となっていきますね。 一方、totalの初期値は0。そしてwhileブロック内でaが加算されていきます。 つまりtotalの値は次のようになっていきますね。 1回目: 0 + 1 -> 1 2回目: 1 + 2 -> 3 3回目: 3 + 3 -> 6 4回目: 6 + 4 -> 10 ・・・・・・。 まあ、平たく言うと、totalは 1 + 2 + 3 + 4 + ...... って計算をしてるわけですね。 9回目の加算でtotalは45、10回目の加算でtotalは55になります。totalが50より小さい間ループをしろ、とwhileで条件付けしてますから、10回目の計算でtotalが55になったと同時にwhileブロックは終了します。 しかしながらtotalは55と言う値を保持したままなので、print(total)と言う命令によって最後に55が印字されてプログラムは終わるわけです。
お礼
cametan_42様 御返事、有難う御座います、インデントは入れたのですが確認せずに投稿したらインデントがありませんでした。 なるほど、確かにそういう事になりますね、深く考えず最後は50になると思い込んでいました。 もう少し深く考えるべきでしたね、すみません。