Python | 1 日 90 分 × 7 日アプリ学習:数当てゲーム(初級編)

Python
スポンサーリンク

1日目のゴールと今日やること

1日目のテーマは
「数当てゲームの“いちばん小さい芯”を作る」 ことです。

いきなり完成版は作りません。
今日はまず、

  • プレイヤーから数字を入力してもらう
  • その数字を「大きい」「小さい」「正解」で判定する
  • 1回ぶんの勝負を成立させる

ここまでを目指します。

「ゲーム」と聞くと難しそうに感じるかもしれませんが、
中身はただの「数字の比較」です。
それを、少しずつ“ゲームっぽく”していきます。


数当てゲームって、どんな流れ?

日本語でゲームの流れを書き出してみる

まずはコードではなく、日本語で考えます。

コンピュータが「正解の数字」を1つ持っている
プレイヤーが数字を入力する
コンピュータが「大きいです」「小さいです」「正解です!」と答える

今日は、この「1回ぶんのやりとり」を作ります。

まだ「何回も挑戦できる」「回数制限がある」などは考えません。
“1回の勝負”をきれいに作ること に集中します。


input で数字を「聞いてみる」

プレイヤーから文字を受け取る

Python でキーボードから入力を受け取るには、input を使います。

guess = input("数字を入力してください: ")
print("あなたが入力したのは:", guess)
Python

このコードを実行すると、

数字を入力してください:

と表示され、
数字(や文字)を打って Enter を押すと、
その内容が guess に入ります。

ここで重要なのは、
input で受け取ったものは「文字列(str)」だということ です。

たとえ「10」と入力しても、
中身は「10という文字」であって、「10という数」ではありません。


int で「文字」から「数」に変える

なぜ変換が必要なのか?

数当てゲームでは、
「正解の数字」と「入力された数字」を比較します。

比較には「数」として扱う必要があります。
そこで int を使います。

guess_text = input("数字を入力してください: ")
guess = int(guess_text)

print("文字列としての入力:", guess_text)
print("数としての入力:", guess)
Python

int(guess_text) とすることで、
“10” → 10 のように、
文字列から整数に変換できます。

ここが、今日の超重要ポイントのひとつです。


「正解の数字」をプログラムの中に用意する

まずは固定の数字でいい

本当はランダムにしたいところですが、
1日目はあえて「固定の正解」にします。

answer = 7
Python

これで、「正解は 7」というゲームになります。

今日は、

  • 正解:7
  • プレイヤーの入力:guess

という前提で、
「大きい」「小さい」「正解」を判定していきます。


if 文で「大きい」「小さい」「正解」を判定する

比較の基本形

Python では、
if を使って条件分岐ができます。

if 条件:
    処理
elif 別の条件:
    別の処理
else:
    それ以外のときの処理
Python

数当てゲームに当てはめると、こうなります。

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

ここでのポイントは、

  • guess < answer → 入力が小さすぎる
  • guess > answer → 入力が大きすぎる
  • どちらでもない → つまり guess == answer → 正解

という流れになっていることです。


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

このプログラムは、

  • 正解を 7 に固定
  • プレイヤーに 1回だけ入力してもらう
  • 「大きい」「小さい」「正解」を表示する

という、
「1回勝負の数当てゲーム」 になっています。


実行してみたときの例

例1:小さすぎる場合

正解:7
入力:3

表示される流れはこうです。

数当てゲームへようこそ!
0〜9 の中から、正解の数字を当ててください。
あなたの予想を入力してください: 3
あなたの答えは: 3
もっと大きい数字です。

例2:大きすぎる場合

正解:7
入力:9

あなたの答えは: 9
もっと小さい数字です。

例3:正解の場合

正解:7
入力:7

あなたの答えは: 7
正解です!おめでとう!

この「反応の違い」が、
if 文と比較演算子(<, >)で実現されています。


今日いちばん深く理解してほしいポイント

input → int の流れは「お約束」として体に入れる

数当てゲームに限らず、
ユーザーから数字を入力してもらうときは、必ず

text = input("メッセージ")
number = int(text)
Python

という流れになります。

「入力は文字列で来る」
「数として使いたいなら int で変換する」

この2ステップを、
“反射で書ける”くらいまで慣れていく と、
今後のプログラムが一気に楽になります。

if / elif / else は「質問の順番」

今回の if 文は、
人間の会話にするとこうです。

「その数字、正解より小さい?」
→ はい → 「もっと大きい数字です」

「じゃあ、正解より大きい?」
→ はい → 「もっと小さい数字です」

「どっちでもないなら、同じだね」
→ 「正解です!」

この「質問の順番」が、
そのまま if / elif / else の順番になっています。


2日目へのつなぎ

1日目は、

  • 正解の数字を変数で持つ
  • input で予想を受け取る
  • int で数に変換する
  • if で「大きい」「小さい」「正解」を判定する

ここまでをやりました。

2日目からは、

  • 「何回もチャレンジできる」ようにする(繰り返し)
  • 「何回目で当てたか」を表示する
  • 正解の数字をランダムにする

といった、“ゲームらしさ”を足していきます。

最後にひとつだけ、あなたに聞きたい。

今日作った「1回勝負の数当てゲーム」、
自分で数字を変えたり、メッセージを変えたりしてみたくなりましたか?

その「ちょっといじってみたい」という感覚が、
あなたを“コードを書く人”にしていきます。

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