2日目のゴールと今日やること
2日目のテーマは
「1回勝負の数当てゲームを、“当たるまで何回もチャレンジできるゲーム”に育てる」
ことです。
1日目では、
- 正解の数字(answer)を用意する
- プレイヤーの入力(guess)を受け取る
- if 文で「大きい」「小さい」「正解」を判定する
ここまでできました。
今日はここに、
- 「当たるまで繰り返す」という仕組み(while)
- 「何回目のチャレンジか」を数える(カウンタ変数)
を加えて、
“ゲームとしてちゃんと遊べる形” にしていきます。
1日目のコードをもう一度整理する
1回勝負の数当てゲーム
まずは、1日目の完成形を思い出しましょう。
answer = 7 # 正解の数字
print("数当てゲームへようこそ!")
print("0〜9 の中から、正解の数字を当ててください。")
guess_text = input("あなたの予想を入力してください: ")
guess = int(guess_text)
print("あなたの答えは:", guess)
if guess < answer:
print("もっと大きい数字です。")
elif guess > answer:
print("もっと小さい数字です。")
else:
print("正解です!おめでとう!")
Pythonこれは「1回だけ予想できるゲーム」です。
2日目は、ここに「繰り返し」を足していきます。
「当たるまで繰り返す」という発想
日本語で先に書いてみる
いきなりコードにせず、
まずは日本語で流れを書いてみます。
正解の数字を決める
「数当てゲームへようこそ」と表示する
正解していない間は、ずっと次を繰り返す
予想を入力してもらう
大きいか小さいか、正解かを判定する
正解なら「おめでとう!」と言って終わる
この「正解していない間は、ずっと繰り返す」が、
プログラムでいう while 文 の役割です。
while 文の基本形を理解する
while は「〜のあいだずっと」
Python の while 文は、こういう形です。
while 条件:
繰り返したい処理
Python意味は、
「条件が True のあいだ、ずっとこの処理を繰り返す」
です。
例えば、
「カウントが 5 未満のあいだ、数字を表示する」ならこうです。
count = 0
while count < 5:
print("count は", count, "です")
count = count + 1
print("ループが終わりました")
Python実行すると、
count は 0 です
count は 1 です
count は 2 です
count は 3 です
count は 4 です
ループが終わりました
となります。
ここで重要なのは、
- while の条件が True のあいだは、何度も同じブロックが実行される
- 中で変数(ここでは count)を変えていかないと、永遠に終わらない
ということです。
数当てゲームに while を当てはめる
条件は「まだ正解していない」
数当てゲームで繰り返したいのは、
「まだ正解していないあいだ、予想させ続ける」
という動きです。
つまり、条件はこうなります。
「guess が answer と違うあいだ」
Python で書くと、
while guess != answer:
...
Pythonとなります。
ただし、ここでひとつ問題があります。
guess を while の前で一度も決めていないと、
「guess って誰?」と怒られます。
なので、最初に「とりあえず何か値」を入れておく必要があります。
「最初の guess」をどう扱うか
先にダミーの値を入れておく方法
一番シンプルな方法は、
while の前で guess に「絶対に正解じゃない値」を入れておくことです。
例えば、正解が 0〜9 のどれかなら、
-1 を入れておけば、必ず「不正解」からスタートします。
answer = 7
guess = -1 # 絶対に正解じゃない値
while guess != answer:
guess_text = input("あなたの予想を入力してください: ")
guess = int(guess_text)
if guess < answer:
print("もっと大きい数字です。")
elif guess > answer:
print("もっと小さい数字です。")
else:
print("正解です!おめでとう!")
Pythonこのコードでは、
- 最初は guess = -1 なので、
guess != answerは True - ループの中で本当の guess を入力してもらう
- 正解なら「正解です!」と言ってから、次のループ条件判定へ
- そのとき
guess == answerなので、ループが終わる
という流れになります。
「何回目のチャレンジか」を数える
カウンタ変数を用意する
ゲームらしくするために、
「何回目で当てたか」を表示してみましょう。
そのためには、
回数を数える変数が必要です。
tries = 0 # 試行回数(チャレンジ回数)
Pythonそして、
プレイヤーが予想するたびに 1 ずつ増やします。
tries = tries + 1
Pythonあるいは、短く書いて、
tries += 1
Pythonとしても同じ意味です。
カウンタを組み込んだ数当てゲーム
コード全体
ここまでの要素を組み合わせると、
「当たるまで何回もチャレンジできる数当てゲーム」ができます。
answer = 7 # 正解の数字
guess = -1 # 最初は絶対に正解じゃない値
tries = 0 # 何回チャレンジしたか
print("数当てゲームへようこそ!")
print("0〜9 の中から、正解の数字を当ててください。")
while guess != answer:
guess_text = input("あなたの予想を入力してください: ")
guess = int(guess_text)
tries += 1 # チャレンジ回数を1増やす
if guess < answer:
print("もっと大きい数字です。")
elif guess > answer:
print("もっと小さい数字です。")
else:
print("正解です!おめでとう!")
print("あなたは", tries, "回目で正解しました。")
Pythonここでの流れを整理します。
- 最初は guess = -1 なので、必ず while に入る
- ループの中で予想を入力してもらう
- tries を 1 増やす
- 大きい/小さい/正解 を判定して表示する
- 正解なら、次の while 判定でループを抜ける
- 最後に「何回目で当てたか」を表示する
実行例で動きをイメージする
例:3回目で正解した場合
正解:7
入力:3 → 9 → 7
実行の流れはこうなります。
数当てゲームへようこそ!
0〜9 の中から、正解の数字を当ててください。
あなたの予想を入力してください: 3
もっと大きい数字です。
あなたの予想を入力してください: 9
もっと小さい数字です。
あなたの予想を入力してください: 7
正解です!おめでとう!
あなたは 3 回目で正解しました。
ここで注目してほしいのは、
- while の中の処理が「予想 → 判定」を何度も繰り返している
- 正解した瞬間に、次のループ判定で while を抜けている
という動きです。
今日いちばん深く理解してほしいポイント
while は「条件が True のあいだ、ずっと続く」
数当てゲームでは、
while guess != answer:
Pythonという条件でした。
これは、
「guess が answer と違うあいだは、ずっと予想させ続ける」
という意味です。
逆に言うと、
「guess が answer と同じになった瞬間に、ループが終わる」
ということでもあります。
カウンタ変数は「ループの中で増やす」
tries のようなカウンタ変数は、
- ループの外で 0 に初期化する
- ループの中で 1 ずつ増やす
というのが基本パターンです。
このパターンは、
ゲームに限らず、
「何回やったか」を数える場面で何度も出てきます。
3日目へのつなぎ
2日目は、
- while で「当たるまで繰り返す」ゲームにした
- カウンタ変数で「何回目で当てたか」を表示できるようにした
ここまで来ました。
3日目からは、
- 正解の数字をランダムにする(毎回違うゲームにする)
- 入力が数字じゃなかったときのエラーを防ぐ
- 「回数制限」をつけて、ゲームオーバーを作る
といった、“ゲームとしてのルール”を増やしていきます。
最後にひとつだけ。
今日のコードを動かしてみて、
「何回で当てられるか、自分で勝負してみたい」と思いましたか?
その気持ちが、
あなたと「プログラムの中の世界」をつなぐ、いちばん大事なエンジンです。

