Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ 数当てゲーム編

Web APP Python
スポンサーリンク
スポンサーリンク

1日目のゴールと全体像

この7日間の新しいテーマは「数当てゲーム」です。 コンピュータがこっそり決めた数字を、プレイヤーが何度かのチャレンジで当てていく——とてもシンプルで、でもプログラミングの基礎を学ぶには最高の題材です。

1日目のゴールは、次の5つを 数当てゲームという具体的な動きの中でイメージできるようになること です。

  • 変数:正解の数字・プレイヤーの入力・試行回数などを入れる“意味のある箱”
  • 条件分岐:正解かどうか、高いか低いかを判定する“ゲームの頭脳”
  • 繰り返し:何度もチャレンジできるようにする“ゲームの枠組み”
  • 関数:入力処理・判定処理・ゲーム全体の流れを部品として切り出す“再利用可能なパーツ”
  • ファイル操作:プレイ履歴(何回で当てたか)を記録する“ゲームの記憶”

数当てゲームは「正解に近づいていく」という分かりやすい動きがあるので、 変数・条件分岐・繰り返しがどう組み合わさるかを理解するのに、とても良いスタート地点になります。

変数とは何か(正解・入力・回数を入れる箱)

正解の数字とプレイヤーの入力を変数で表す

数当てゲームで一番大事なのは、 「コンピュータが決めた正解の数字」「プレイヤーが入力した数字」 です。

これをPythonの変数で表現すると、例えば次のようになります。

secret_number = 42      # コンピュータが決めた正解の数字
guess = None            # プレイヤーが入力した数字
attempts = 0            # 何回チャレンジしたか
Python

ここで重要なのは、変数名が「何を表しているか」をそのまま伝えていることです。 secret_number は「隠された正解」、guess は「プレイヤーの予想」、attempts は「試行回数」です。

さらに、ユーザーから入力を受け取るときは、こういう形になります。

guess_str = input("数字を入力してください: ")
guess = int(guess_str)
attempts += 1
Python

1日目では、「変数はただの箱ではなく、ゲームの世界を形作る“名前付きの意味”だ」という感覚を、 数字というシンプルな題材で掴んでください。

条件分岐とは何か(当たり・ハズレ・高い・低いを判定する頭脳)

正解かどうかを判定する

数当てゲームの本質は、 「入力された数字が正解かどうかを判定する」 ことです。

これをPythonで表現するには、 if を使って条件分岐を書きます。

if guess == secret_number:
    print("正解です!")
Python

この if が、ゲームの「頭脳」です。 プレイヤーの入力が正解と一致した瞬間に、「当たり!」と教えてくれます。

高いか低いかを教えるヒント

数当てゲームを少し面白くするには、 「高すぎるか、低すぎるか」を教えるヒント を追加します。

if guess < secret_number:
    print("もっと大きい数字です。")
elif guess > secret_number:
    print("もっと小さい数字です。")
else:
    print("正解です!")
Python

ここで深掘りしたいのは、 条件分岐は「ゲームのリアクションを決める頭脳」 だということです。

  • 正解 → 「正解です!」
  • 小さすぎる → 「もっと大きい数字です。」
  • 大きすぎる → 「もっと小さい数字です。」

このように、プレイヤーの入力に応じてゲームの反応を変えることで、 「対話している感覚」が生まれます。

繰り返しとは何か(何度もチャレンジできる枠組み)

当たるまで繰り返すループ

数当てゲームは、一度入力して終わりではなく、 当たるまで何度もチャレンジできるゲーム です。

これをPythonで表現するには、 while を使って繰り返しの枠組みを作ります。

secret_number = 42
attempts = 0

while True:
    guess_str = input("数字を入力してください: ")
    guess = int(guess_str)
    attempts += 1

    if guess == secret_number:
        print("正解です!")
        print(f"{attempts} 回目で当てました。")
        break
    elif guess < secret_number:
        print("もっと大きい数字です。")
    else:
        print("もっと小さい数字です。")
Python

ここで深掘りしたいのは、

  • while True: が「ゲームを続ける枠組み」になっていること
  • ループの一回分が「入力 → 判定 → ヒント → 続行か終了か」という一つのストーリーになっていること

です。

繰り返しは、 ゲームを「一回きりの処理」ではなく、 “遊び続けられる仕組み” にするための土台です。

1日目では、「ループの一回分が自然な流れになっているか」を意識してコードを眺めてみてください。

関数とは何か(入力・判定・ゲーム全体を部品にする)

処理を“意味ごとにまとめて名前をつける”

関数は、「まとまった処理に名前をつけて、何度でも呼び出せるようにする」ための仕組みです。 数当てゲームでは、入力処理・判定処理・ゲーム全体の流れを関数にすると、コードがぐっと読みやすくなります。

入力用の関数

def input_guess():
    guess_str = input("数字を入力してください: ")
    return int(guess_str)
Python

判定用の関数

def check_guess(guess, secret_number):
    if guess < secret_number:
        print("もっと大きい数字です。")
        return False
    elif guess > secret_number:
        print("もっと小さい数字です。")
        return False
    else:
        print("正解です!")
        return True
Python

ゲーム全体の流れ

def play_game():
    secret_number = 42
    attempts = 0

    while True:
        guess = input_guess()
        attempts += 1
        if check_guess(guess, secret_number):
            print(f"{attempts} 回目で当てました。")
            break
Python

ここで重要なのは、 関数を使うことで「何をしているか」が一目で分かるようになる ということです。

input_guess と書いてあれば「入力しているんだな」と分かるし、 check_guess と書いてあれば「判定しているんだな」と分かります。

1日目では、「関数はゲームの部品である」という感覚を、 数当てゲームという具体的な処理を通して掴んでください。

ファイル操作とは何か(プレイ履歴を“記録”として残す)

何回で当てたかを保存する

数当てゲームを少しだけ“ゲームらしく”するなら、 「何回目で当てたか」をファイルに残す 機能をつけると面白くなります。

例えば、毎回のプレイ結果を記録しておけば、 「今日は何回で当てられたか」「過去の最高記録は何回か」 といったことを後から振り返ることができます。

Pythonでは、open を使ってファイルに書き込むことができます。

def save_result(attempts):
    with open("guess_history.txt", "a", encoding="utf-8") as f:
        line = f"{attempts} 回目で正解\n"
        f.write(line)
Python

これをゲーム終了後に呼び出します。

def play_game():
    secret_number = 42
    attempts = 0

    while True:
        guess = input_guess()
        attempts += 1
        if check_guess(guess, secret_number):
            print(f"{attempts} 回目で当てました。")
            save_result(attempts)
            break
Python

これで、guess_history.txt というファイルに、 プレイごとの結果が一行ずつ残っていきます。

後からファイルを開けば、 「自分がどれくらいで当ててきたか」を一覧で見ることができます。

ファイル操作は、「プログラムの外にデータを残す」ための基本的な技術です。 数当てゲームのプレイ履歴という具体的な形で、この技術に触れていきましょう。

1日目で本当に掴んでほしいこと

1日目のゴールは、「数当てゲーム」という身近なテーマを通して、次の5つの柱を“意味付きで”理解することです。

  • 正解の数字・プレイヤーの入力・試行回数を変数として扱うことで、「値に名前をつける」感覚を掴む。
  • 条件分岐で正解・高い・低いを判定し、「入力に応じてゲームのリアクションを変える」ロジックを体験する。
  • 繰り返しで当たるまでチャレンジできるようにし、「ゲームとしての枠組み」を感じる。
  • 関数で入力・判定・ゲーム全体の流れを部品にし、「意味ごとにコードを分ける」感覚を育てる。
  • ファイル操作でプレイ結果を保存し、「プログラムの外にゲームの記録を持つ」技術に触れる。

数当てゲームという一つのアプリの中に、Pythonの基礎がぎゅっと詰まっています。 2日目以降は、このゲームを少しずつ拡張しながら、

  • ランダムな正解
  • 回数制限
  • スコアや難易度
  • 履歴の活用

など、より“ゲームらしい”形へ育てていきます。

タイトルとURLをコピーしました