【プログラム解説】数字当てゲーム

program
import random

def number_guessing_game():
    print("数字当てゲームへようこそ!")
    print("1~100の数字を当ててください。")

    # ランダムな数を選択
    secret_number = random.randint(1, 100)

    while True:
        try:
            # ユーザーの入力を取得
            guess = int(input("あなたの予想: "))

            # 判定
            if guess < secret_number:
                print("小さすぎます!")
            elif guess > secret_number:
                print("大きすぎます!")
            else:
                print("正解です!おめでとうございます!")
                break
        except ValueError:
            print("無効な入力です。数値を入力してください。")

# ゲームの実行
number_guessing_game()

このコードは、Pythonを使ったシンプルな数字当てゲームのプログラムです。1から100までのランダムな数字を生成し、ユーザーがその数字を予想して当てるまで繰り返し入力を受け付けます。ユーザーの入力に応じて「小さすぎる」「大きすぎる」といったヒントを出し、正解すればゲーム終了となります。


コードの詳細説明


1. 必要なモジュールのインポート

import random
  • randomモジュール
    • ランダムな数値を生成するためのPythonの標準ライブラリです。
    • 今回は random.randint() を使って1から100までの範囲でランダムな整数を生成します。

2. ゲームの開始メッセージ

print("数字当てゲームへようこそ!")
print("1~100の数字を当ててください。")
  • ゲームの開始時に、ユーザーにゲームの趣旨を説明します。

3. 秘密の数字の生成

secret_number = random.randint(1, 100)
  • 役割:1から100までの範囲でランダムに選ばれた整数を生成します。この数字をユーザーが当てることが目標です。

4. ユーザーの予想と判定のループ

while True:
try:
guess = int(input("あなたの予想: "))
  • 無限ループwhile True):
    • ユーザーが正解するまで、繰り返し予想を入力させます。
  • tryブロック
    • ユーザーの入力が整数以外の場合、ValueError をキャッチしてエラーメッセージを表示します。
  • guess = int(input(...))
    • ユーザーに数値の入力を求め、int()で整数に変換します。

5. 入力値と秘密の数字の比較

if guess < secret_number:
print("小さすぎます!")
elif guess > secret_number:
print("大きすぎます!")
else:
print("正解です!おめでとうございます!")
break
  • if 文で判定
    1. 小さすぎる場合
      • ユーザーの入力が secret_number より小さい場合、「小さすぎます!」と表示。
    2. 大きすぎる場合
      • ユーザーの入力が secret_number より大きい場合、「大きすぎます!」と表示。
    3. 正解の場合
      • ユーザーの入力が秘密の数字と一致したら、「正解です!」と表示し、ループを終了します(break)。

6. 無効な入力の処理

except ValueError:
print("無効な入力です。数値を入力してください。")
  • exceptブロック
    • ユーザーが数値以外を入力した場合(例: 文字列や記号)、ValueError が発生します。
    • このエラーをキャッチして、「無効な入力」とメッセージを表示し、ゲームを続行します。

プログラムの動作フロー

  1. ゲームの開始
    • 1~100のランダムな数字を生成します。
  2. ユーザーの入力
    • ユーザーに予想する数字を入力させます。
    • 入力が不正(例: “abc”)の場合、エラーメッセージを表示して再入力を求めます。
  3. ヒントの表示
    • 入力値が小さい場合:「小さすぎます!」
    • 入力値が大きい場合:「大きすぎます!」
  4. 正解の場合
    • 秘密の数字と一致したら「正解です!おめでとうございます!」と表示し、ゲームを終了します。

実行例

1. 正解までの流れ

数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想: 50
小さすぎます!
あなたの予想: 75
大きすぎます!
あなたの予想: 63
小さすぎます!
あなたの予想: 70
正解です!おめでとうございます!

2. 無効な入力をした場合

数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想: abc
無効な入力です。数値を入力してください。
あなたの予想: 50
小さすぎます!

ポイント

  1. ランダムな数字生成
    • random.randint() を使ってランダムな数値を生成します。
  2. 例外処理
    • ユーザーが数値以外を入力してもプログラムが強制終了せず、エラーメッセージを表示して再入力を求めるため、安全性が高い設計です。
  3. インタラクティブな設計
    • 小さすぎる、大きすぎるといったヒントを与え、ユーザーがゲームを楽しめるよう工夫されています。

コメント

タイトルとURLをコピーしました
//投稿内コードにコピー表示 //コピー表示ここまで