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
Python1日目では、「変数はただの箱ではなく、ゲームの世界を形作る“名前付きの意味”だ」という感覚を、 数字というシンプルな題材で掴んでください。
条件分岐とは何か(当たり・ハズレ・高い・低いを判定する頭脳)
正解かどうかを判定する
数当てゲームの本質は、 「入力された数字が正解かどうかを判定する」 ことです。
これを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日目以降は、このゲームを少しずつ拡張しながら、
- ランダムな正解
- 回数制限
- スコアや難易度
- 履歴の活用
など、より“ゲームらしい”形へ育てていきます。


