では、先ほど提示した「さらに難しい練習問題」の解答例と解説を順番に見ていきましょう。初心者が理解しやすいように、コードとポイントを丁寧に説明します。
問題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で「九九表」
これで「繰り返し処理+条件分岐」の応用が一通り練習できます。
👉 次のステップとしては「リストや辞書を使ったループ処理」や「関数化して再利用」などに進むと、さらに実用的になります。
