while文 - 条件が満たされるまで繰り返す
目次
1. このレッスンで学ぶこと
- while文とは何か
- while文の基本構文
- for文との違い
- while文の実用例と注意点
2. while文とは
while文は、指定された条件が真(True)である限り、処理を繰り返し実行する制御構文です。繰り返し回数が事前にわからない場合や、特定の条件が満たされるまで処理を続けたい場合に使用されます。
while文の基本構造
Pythonwhile 条件式: 繰り返す処理 # 条件が真の間、実行される
while文の構成要素
| 要素 | 説明 | 例 |
|---|---|---|
while | ループのキーワード | 必須 |
| 条件式 | 繰り返すかどうかを判定 | count < 5, flag == True |
: | ブロックの開始 | 必須 |
| インデント | ループの処理の範囲 | 4文字スペース |
| 処理 | 繰り返す内容 | count += 1 など |
while文の特徴
- 条件が真である限り無限に繰り返す可能性がある
- 条件式を更新する処理が必須(無限ループを避けるため)
- 繰り返し回数が不定の場合に適している
- ユーザー入力や外部条件に基づいた制御に便利
簡単な例
Python# 0から4まで表示 count = 0 while count < 5: print(count) count += 1 # 実行結果: # 0 # 1 # 2 # 3 # 4 # パスワードが正しいまで繰り返す password = "" while password != "1234": password = input("パスワード: ") print("ログイン成功!")
3. なぜwhile文が必要なのか?
for文は「決まった回数」繰り返すのに便利ですが、「条件が満たされるまで」繰り返したい場合はwhile文が適しています。
Python# ユーザーが正しい値を入力するまで繰り返す password = "" while password != "1234": password = input("パスワードを入力してください: ") print("ログイン成功!")
while文を使うことで、条件次第で繰り返し回数が変わる処理を書けます。
💡 豆知識: while文の「while」は英語で「〜の間」という意味です。「条件が真の間、処理を繰り返す」という動作を表しています。
4. while文の基本構文
構文
機能: 条件式が真の間、処理を繰り返し実行します。
書き方:
Pythonwhile 条件式: 繰り返す処理
用途: 回数が事前にわからない繰り返し、条件達成まで継続、ユーザー入力の待機
注意点:
- 条件式が偽にならないと無限ループになる
- コロン(:)とインデントが必須
- 条件式を変化させる処理が必要
Python# 基本的な使い方 count = 0 while count < 5: print(f"カウント: {count}") count += 1 print("終了")
実行結果:
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
終了
5. for文との違い
for文とwhile文の比較
Python# for文: 回数が決まっている print("=== for文 ===") for i in range(5): print(i) # while文: 条件で制御 print("\n=== while文 ===") i = 0 while i < 5: print(i) i += 1
実行結果:
=== for文 ===
0
1
2
3
4
=== while文 ===
0
1
2
3
4
使い分けのポイント:
- for文: 繰り返し回数が明確な場合
- while文: 条件次第で回数が変わる場合
6. while文の基本パターン
パターン1: カウンタ変数を使う
Python# 10から0までカウントダウン count = 10 while count >= 0: print(count) count -= 1 print("発射!")
実行結果:
10
9
8
7
6
5
4
3
2
1
0
発射!
パターン2: フラグ変数を使う
機能: ブール変数で繰り返しを制御します。
書き方:
Pythonflag = True while flag: # 処理 if 条件: flag = False
用途: 複雑な終了条件、複数箇所からの制御
注意点: フラグの更新を忘れると無限ループになる
Python# ユーザーが"quit"を入力するまで継続 running = True while running: command = input("コマンドを入力してください (quit で終了): ") if command == "quit": running = False else: print(f"入力されたコマンド: {command}") print("プログラムを終了します")
パターン3: 無限ループ + break
Python# 無限ループから条件でbreak while True: number = input("数値を入力してください (0で終了): ") if number == "0": break print(f"入力された数値: {number}") print("終了しました")
7. 具体例
例1: 合計が100を超えるまで
Pythontotal = 0 count = 1 while total < 100: total += count print(f"{count}を加算: 合計 = {total}") count += 1 print(f"\n{count - 1}回で100を超えました")
実行結果:
1を加算: 合計 = 1
2を加算: 合計 = 3
3を加算: 合計 = 6
4を加算: 合計 = 10
5を加算: 合計 = 15
...
13を加算: 合計 = 91
14を加算: 合計 = 105
14回で100を超えました
例2: パスワード認証
Pythoncorrect_password = "python123" attempts = 0 max_attempts = 3 while attempts < max_attempts: password = input("パスワードを入力してください: ") attempts += 1 if password == correct_password: print("ログイン成功!") break else: remaining = max_attempts - attempts if remaining > 0: print(f"パスワードが違います。残り{remaining}回") else: print("ログイン失敗。アカウントがロックされました。")
例3: 数当てゲーム
Pythonimport random answer = random.randint(1, 100) attempts = 0 print("=== 数当てゲーム ===") print("1〜100の数を当ててください") while True: guess = int(input("予想: ")) attempts += 1 if guess == answer: print(f"正解! {attempts}回で当たりました") break elif guess < answer: print("もっと大きい数です") else: print("もっと小さい数です")
8. 無限ループに注意
無限ループの例
Python# 危険: 条件が常に真 count = 0 while count < 5: print(count) # count += 1 を忘れている! # これは無限ループになる
無限ループの回避方法
Python# 方法1: カウンタを確実に更新 count = 0 while count < 5: print(count) count += 1 # 必ず更新 # 方法2: 最大繰り返し回数を設定 count = 0 max_iterations = 1000 while count < 5 and max_iterations > 0: print(count) count += 1 max_iterations -= 1 # 方法3: breakで確実に抜ける count = 0 while True: if count >= 5: break print(count) count += 1
9. 練習問題
問題1(基礎)⭐☆☆
1から10までの数値を表示するプログラムをwhile文で書いてください。
💡 ヒント
カウンタ変数を1から始めて、10以下の間繰り返します。
✅ 解答例
Pythoncount = 1 while count <= 10: print(count) count += 1
実行結果:
1
2
3
4
5
6
7
8
9
10
解説: count を1から始めて、10以下の間繰り返し、毎回1ずつ増やしています。
問題2(基礎)⭐☆☆
10から1までカウントダウンするプログラムを書いてください。
💡 ヒント
count を10から始めて、1以上の間繰り返し、毎回1ずつ減らします。
✅ 解答例
Pythoncount = 10 while count >= 1: print(count) count -= 1 print("発射!")
実行結果:
10
9
8
7
6
5
4
3
2
1
発射!
解説: count を減らしながら1まで表示しています。
問題3(応用)⭐⭐☆
1から順に足していき、合計が50を超えたら終了するプログラムを書いてください。
💡 ヒント
合計が50以下の間、数値を足していきます。
✅ 解答例
Pythontotal = 0 count = 1 while total <= 50: total += count print(f"{count}を加算: 合計 = {total}") count += 1 print(f"\n合計が50を超えました")
実行結果:
1を加算: 合計 = 1
2を加算: 合計 = 3
3を加算: 合計 = 6
4を加算: 合計 = 10
5を加算: 合計 = 15
6を加算: 合計 = 21
7を加算: 合計 = 28
8を加算: 合計 = 36
9を加算: 合計 = 45
10を加算: 合計 = 55
合計が50を超えました
解説: 合計が50以下の間、順番に数値を加算しています。
10. まとめ
このレッスンでは、while文で条件ベースの繰り返しを行う方法を学びました。
- while文は、条件が真である間だけ処理を繰り返す構文です。
- 反復のたびに条件に関わる値を更新することが重要です。
- 終了条件を明確にしないと無限ループになるリスクがあります。
- 回数が未確定な処理や入力待ち処理でwhile文が有効です。
- ループ変数の変化を確認しながら実装すると安全です。
while文 - 条件が満たされるまで繰り返す
目次
1. このレッスンで学ぶこと
- while文とは何か
- while文の基本構文
- for文との違い
- while文の実用例と注意点
2. while文とは
while文は、指定された条件が真(True)である限り、処理を繰り返し実行する制御構文です。繰り返し回数が事前にわからない場合や、特定の条件が満たされるまで処理を続けたい場合に使用されます。
while文の基本構造
Pythonwhile 条件式: 繰り返す処理 # 条件が真の間、実行される
while文の構成要素
| 要素 | 説明 | 例 |
|---|---|---|
while | ループのキーワード | 必須 |
| 条件式 | 繰り返すかどうかを判定 | count < 5, flag == True |
: | ブロックの開始 | 必須 |
| インデント | ループの処理の範囲 | 4文字スペース |
| 処理 | 繰り返す内容 | count += 1 など |
while文の特徴
- 条件が真である限り無限に繰り返す可能性がある
- 条件式を更新する処理が必須(無限ループを避けるため)
- 繰り返し回数が不定の場合に適している
- ユーザー入力や外部条件に基づいた制御に便利
簡単な例
Python# 0から4まで表示 count = 0 while count < 5: print(count) count += 1 # 実行結果: # 0 # 1 # 2 # 3 # 4 # パスワードが正しいまで繰り返す password = "" while password != "1234": password = input("パスワード: ") print("ログイン成功!")
3. なぜwhile文が必要なのか?
for文は「決まった回数」繰り返すのに便利ですが、「条件が満たされるまで」繰り返したい場合はwhile文が適しています。
Python# ユーザーが正しい値を入力するまで繰り返す password = "" while password != "1234": password = input("パスワードを入力してください: ") print("ログイン成功!")
while文を使うことで、条件次第で繰り返し回数が変わる処理を書けます。
💡 豆知識: while文の「while」は英語で「〜の間」という意味です。「条件が真の間、処理を繰り返す」という動作を表しています。
4. while文の基本構文
構文
機能: 条件式が真の間、処理を繰り返し実行します。
書き方:
Pythonwhile 条件式: 繰り返す処理
用途: 回数が事前にわからない繰り返し、条件達成まで継続、ユーザー入力の待機
注意点:
- 条件式が偽にならないと無限ループになる
- コロン(:)とインデントが必須
- 条件式を変化させる処理が必要
Python# 基本的な使い方 count = 0 while count < 5: print(f"カウント: {count}") count += 1 print("終了")
実行結果:
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
終了
5. for文との違い
for文とwhile文の比較
Python# for文: 回数が決まっている print("=== for文 ===") for i in range(5): print(i) # while文: 条件で制御 print("\n=== while文 ===") i = 0 while i < 5: print(i) i += 1
実行結果:
=== for文 ===
0
1
2
3
4
=== while文 ===
0
1
2
3
4
使い分けのポイント:
- for文: 繰り返し回数が明確な場合
- while文: 条件次第で回数が変わる場合
6. while文の基本パターン
パターン1: カウンタ変数を使う
Python# 10から0までカウントダウン count = 10 while count >= 0: print(count) count -= 1 print("発射!")
実行結果:
10
9
8
7
6
5
4
3
2
1
0
発射!
パターン2: フラグ変数を使う
機能: ブール変数で繰り返しを制御します。
書き方:
Pythonflag = True while flag: # 処理 if 条件: flag = False
用途: 複雑な終了条件、複数箇所からの制御
注意点: フラグの更新を忘れると無限ループになる
Python# ユーザーが"quit"を入力するまで継続 running = True while running: command = input("コマンドを入力してください (quit で終了): ") if command == "quit": running = False else: print(f"入力されたコマンド: {command}") print("プログラムを終了します")
パターン3: 無限ループ + break
Python# 無限ループから条件でbreak while True: number = input("数値を入力してください (0で終了): ") if number == "0": break print(f"入力された数値: {number}") print("終了しました")
7. 具体例
例1: 合計が100を超えるまで
Pythontotal = 0 count = 1 while total < 100: total += count print(f"{count}を加算: 合計 = {total}") count += 1 print(f"\n{count - 1}回で100を超えました")
実行結果:
1を加算: 合計 = 1
2を加算: 合計 = 3
3を加算: 合計 = 6
4を加算: 合計 = 10
5を加算: 合計 = 15
...
13を加算: 合計 = 91
14を加算: 合計 = 105
14回で100を超えました
例2: パスワード認証
Pythoncorrect_password = "python123" attempts = 0 max_attempts = 3 while attempts < max_attempts: password = input("パスワードを入力してください: ") attempts += 1 if password == correct_password: print("ログイン成功!") break else: remaining = max_attempts - attempts if remaining > 0: print(f"パスワードが違います。残り{remaining}回") else: print("ログイン失敗。アカウントがロックされました。")
例3: 数当てゲーム
Pythonimport random answer = random.randint(1, 100) attempts = 0 print("=== 数当てゲーム ===") print("1〜100の数を当ててください") while True: guess = int(input("予想: ")) attempts += 1 if guess == answer: print(f"正解! {attempts}回で当たりました") break elif guess < answer: print("もっと大きい数です") else: print("もっと小さい数です")
8. 無限ループに注意
無限ループの例
Python# 危険: 条件が常に真 count = 0 while count < 5: print(count) # count += 1 を忘れている! # これは無限ループになる
無限ループの回避方法
Python# 方法1: カウンタを確実に更新 count = 0 while count < 5: print(count) count += 1 # 必ず更新 # 方法2: 最大繰り返し回数を設定 count = 0 max_iterations = 1000 while count < 5 and max_iterations > 0: print(count) count += 1 max_iterations -= 1 # 方法3: breakで確実に抜ける count = 0 while True: if count >= 5: break print(count) count += 1
9. 練習問題
問題1(基礎)⭐☆☆
1から10までの数値を表示するプログラムをwhile文で書いてください。
💡 ヒント
カウンタ変数を1から始めて、10以下の間繰り返します。
✅ 解答例
Pythoncount = 1 while count <= 10: print(count) count += 1
実行結果:
1
2
3
4
5
6
7
8
9
10
解説: count を1から始めて、10以下の間繰り返し、毎回1ずつ増やしています。
問題2(基礎)⭐☆☆
10から1までカウントダウンするプログラムを書いてください。
💡 ヒント
count を10から始めて、1以上の間繰り返し、毎回1ずつ減らします。
✅ 解答例
Pythoncount = 10 while count >= 1: print(count) count -= 1 print("発射!")
実行結果:
10
9
8
7
6
5
4
3
2
1
発射!
解説: count を減らしながら1まで表示しています。
問題3(応用)⭐⭐☆
1から順に足していき、合計が50を超えたら終了するプログラムを書いてください。
💡 ヒント
合計が50以下の間、数値を足していきます。
✅ 解答例
Pythontotal = 0 count = 1 while total <= 50: total += count print(f"{count}を加算: 合計 = {total}") count += 1 print(f"\n合計が50を超えました")
実行結果:
1を加算: 合計 = 1
2を加算: 合計 = 3
3を加算: 合計 = 6
4を加算: 合計 = 10
5を加算: 合計 = 15
6を加算: 合計 = 21
7を加算: 合計 = 28
8を加算: 合計 = 36
9を加算: 合計 = 45
10を加算: 合計 = 55
合計が50を超えました
解説: 合計が50以下の間、順番に数値を加算しています。
10. まとめ
このレッスンでは、while文で条件ベースの繰り返しを行う方法を学びました。
- while文は、条件が真である間だけ処理を繰り返す構文です。
- 反復のたびに条件に関わる値を更新することが重要です。
- 終了条件を明確にしないと無限ループになるリスクがあります。
- 回数が未確定な処理や入力待ち処理でwhile文が有効です。
- ループ変数の変化を確認しながら実装すると安全です。