L04 ch02 — while ループ
テクノロジ系 / L04 loop — ループ
L04 ch02 — while ループ
「条件が True の間だけ繰り返す」を扱う
ゴール
while 条件:で繰り返しを書ける- ループ終了条件を自分で設計できる
- 無限ループと
break/continueを理解する
for と while の使い分け
| ループ種別 | 向いている場面 | 例 |
|---|---|---|
for | 回数が決まっている | 1〜10 を順に処理 |
while | 回数が決まっていない | ユーザー入力待ち / 条件達成まで |
→ 「終わる条件」がデータ側にあるなら while、回数が事前に分かるなら for。
最小例
# main.py
n = 0
while n < 3:
print(n)
n += 1
# → 0
# → 1
# → 2ポイント: ループ内で n を必ず変化させる。忘れると無限ループ。
while True + break
「条件が複雑」「途中で抜けたい」場合は while True + break が定番。
total = 0
while True:
total += 1
if total >= 10:
break
print(total) # → 10continue でスキップ
i = 0
while i < 5:
i += 1
if i % 2 == 0:
continue # 偶数はスキップ
print(i)
# → 1
# → 3
# → 5continue は その回をスキップして次の判定に進む。break と違いループは続く。
無限ループに注意
# ❌ 終わらない (n を増やしていない)
n = 0
while n < 3:
print(n)
# → 0 を無限に出し続ける → Ctrl+C で停止while を書いたら 「どこで条件が False になるか」 を必ず確認する。
累積パターン
# 1 + 2 + ... + 100 を計算
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(total) # → 5050for i in range(1, 101) でも同じことができるが、条件を細かく制御したい時に while が活きる。
drill
drill/ — while で累積和を計算する関数を完成させる
拡張課題
- else 節:
whileにもelseが付けられる。breakで抜けなかった場合のみ実行される
n = 0
while n < 3:
n += 1
else:
print("正常終了") # break しなかったので実行される
- 入力ループ:
input()で "quit" が来るまで受け取り続ける
while True:
s = input("> ")
if s == "quit":
break
print(f"echo: {s}")
- 二重ループ: 外側
while+ 内側forで 2 次元処理
- break は 一番内側のループしか抜けない ことに注意
よくある詰まり
| 症状 | 原因 | 対処 |
|---|---|---|
| 無限に出力される / 止まらない | ループ内で変数を変化させていない | n += 1 等を入れる / Ctrl+C |
| 1 回も実行されない | 初期条件が最初から False | 初期値を見直す |
| break が効かない | 内側のループしか抜けていない | フラグ変数 or 関数化して return |
i += 1 の位置で結果が変わる | インクリメントが先 / 後で意味が違う | 累積するなら処理→更新の順 |
次に学ぶ領域
| 領域 | 続けて読む |
|---|---|
| for ループ (回数固定) | loop/ch01-for |
| 条件分岐 (while と組み合わせる) | 03-conditional/ch01-if |
| 関数化 (累積処理を再利用) | function/ch01-basic |
力試ししたい方は クイズ形式の演習(任意) もあります。読むだけでも十分です。