Python | while文によるループ(繰り返し処理)

Python
スポンサーリンク

では、先ほど提示した「さらに難しい練習問題」の解答例と解説を順番に見ていきましょう。初心者が理解しやすいように、コードとポイントを丁寧に説明します。


問題1: 平均値を求める

ユーザーから数値を次々入力してもらい、「0」が入力されたら終了。それまでの平均値を表示する。

解答例

total = 0
count = 0

while True:
    n = int(input("数値を入力してください(0で終了): "))
    if n == 0:
        break
    total += n
    count += 1

if count > 0:
    print("平均値:", total / count)
else:
    print("入力がありませんでした")
Python

解説

  • totalで合計、countで入力回数を管理。
  • 0が入力されたらbreakで終了。
  • 平均値 = 合計 ÷ 個数。
    👉 入力がない場合にゼロ除算を防ぐため、if count > 0 を入れるのがポイント。

問題2: 数当てゲーム

1〜100の乱数を作り、ユーザーが当てるまで繰り返す。

解答例

import random
secret = random.randint(1, 100)

while True:
    guess = int(input("1〜100の数を当ててください: "))
    if guess == secret:
        print("正解!")
        break
    elif guess > secret:
        print("大きすぎます")
    else:
        print("小さすぎます")
Python

解説

  • random.randint(1, 100)で秘密の数を作成。
  • 入力が正解なら終了、違えばヒントを表示。
    👉 条件分岐(if/elif/else)を組み合わせる練習になります。

問題3: 素数判定

入力した数が素数かどうかを判定する。

解答例

n = int(input("数を入力してください: "))
is_prime = True

if n < 2:
    is_prime = False
else:
    for i in range(2, n):
        if n % i == 0:
            is_prime = False
            break

if is_prime:
    print(n, "は素数です")
else:
    print(n, "は素数ではありません")
Python

解説

  • 素数は「2以上で、割り切れる数がない」もの。
  • for i in range(2, n)で割り算を試す。
  • 割り切れたらis_prime = Falseにして終了。
    👉 breakを使うことで無駄な計算を省けます。

問題4: フィボナッチ数列

最初の20項を表示する。

解答例

a, b = 1, 1
for _ in range(20):
    print(a)
    a, b = b, a + b
Python

解説

  • 最初の2つを a=1, b=1 とする。
  • 毎回「次の数 = 前の2つの和」で更新。
  • a, b = b, a + b で同時に入れ替え。
    👉 Pythonの「同時代入」が便利に使える例です。

問題5: 九九表

1×1〜9×9を表形式で表示する。

解答例

for i in range(1, 10):
    for j in range(1, 10):
        print(i * j, end="\t")
    print()
Python

解説

  • 外側のfor iが「段」、内側のfor jが「列」。
  • end="\t"で横に並べ、print()で改行。
    👉 二重ループの基本練習になります。

まとめ

  • 問題1: while+breakで「平均値」
  • 問題2: while+乱数+条件分岐で「数当て」
  • 問題3: for+割り算チェックで「素数判定」
  • 問題4: for+同時代入で「フィボナッチ」
  • 問題5: 二重forで「九九表」

これで「繰り返し処理+条件分岐」の応用が一通り練習できます。
👉 次のステップとしては「リストや辞書を使ったループ処理」や「関数化して再利用」などに進むと、さらに実用的になります。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました