Python 入門コース / 第2章 制御構文(第9〜15回) / レッスン 15
【実践】数当てゲームを作る
作るものを手順に分解する
いきなり書き始めず、日本語で手順に分けます。① 1〜100 の答えをランダムに決める ② 入力を受け取る ③ 大小を判定してヒントを出す ④ 正解するまでくり返す ⑤ 回数制限を付ける ⑥ 変な入力をはじく。この分解ができれば、あとは 1 つずつ翻訳するだけです。
乱数を用意する
標準ライブラリの random を import して使います。randint(1, 100) は 1 と 100 を両方含む整数を返します(range() と違う点に注意)。
editor.py
組み立てる
入力を受け取る input()、判定する if、くり返す while、抜ける break、飛ばす continue、そして回数を数え切ったときの else。ここまでに学んだ道具がすべて登場します。
guess.py
import random
MAX_TRIES = 5
answer = random.randint(1, 100)
count = 0
print("1〜100の数字を当ててください。")
print(f"チャンスは{MAX_TRIES}回です。")
while count < MAX_TRIES:
value = input(f"[{count + 1}/{MAX_TRIES}] 数字を入力:")
if not value.isdigit():
print("1〜100の半角数字を入力してください。")
continue
guess = int(value)
if not 1 <= guess <= 100:
print("1〜100の範囲で入力してください。")
continue
count += 1
if guess == answer:
print(f"正解です! {count}回で当たりました。")
break
if guess < answer:
print("もっと大きい数字です。")
else:
print("もっと小さい数字です。")
else:
print(f"残念、時間切れです。答えは{answer}でした。")
ポイントは 2 つ。不正な入力では count を増やさない(continue を先に書く)ことと、while の else で時間切れを表現していることです。手元で python3 guess.py として遊んでみてください。
自動で遊ばせて動きを見る
ブラウザ内では input() が使えないので、二分探索で自動プレイする版を用意しました。判定ロジックは同じです。
editor.py
改造のヒント
難易度(範囲や回数)を選べるようにする、「あと少し」のヒントを足す、連勝記録をリストに貯める。動くものを 1 つ作ってから機能を足すという進め方が、そのまま実務のやり方です。
✅ 理解度チェック
random.randint(1, 100) が返す値の範囲は?