Python 入門コース / 第2章 制御構文(第9〜15回) / レッスン 15

【実践】数当てゲームを作る

作るものを手順に分解する

いきなり書き始めず、日本語で手順に分けます。① 1〜100 の答えをランダムに決める ② 入力を受け取る ③ 大小を判定してヒントを出す ④ 正解するまでくり返す ⑤ 回数制限を付ける ⑥ 変な入力をはじく。この分解ができれば、あとは 1 つずつ翻訳するだけです。

乱数を用意する

標準ライブラリの randomimport して使います。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 を先に書く)ことと、whileelse で時間切れを表現していることです。手元で python3 guess.py として遊んでみてください。

自動で遊ばせて動きを見る

ブラウザ内では input() が使えないので、二分探索で自動プレイする版を用意しました。判定ロジックは同じです。

editor.py

改造のヒント

難易度(範囲や回数)を選べるようにする、「あと少し」のヒントを足す、連勝記録をリストに貯める。動くものを 1 つ作ってから機能を足すという進め方が、そのまま実務のやり方です。

✅ 理解度チェック

random.randint(1, 100) が返す値の範囲は?