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
文で判定:- 小さすぎる場合:
- ユーザーの入力が
secret_number
より小さい場合、「小さすぎます!」と表示。
- ユーザーの入力が
- 大きすぎる場合:
- ユーザーの入力が
secret_number
より大きい場合、「大きすぎます!」と表示。
- ユーザーの入力が
- 正解の場合:
- ユーザーの入力が秘密の数字と一致したら、「正解です!」と表示し、ループを終了します(
break
)。
- ユーザーの入力が秘密の数字と一致したら、「正解です!」と表示し、ループを終了します(
- 小さすぎる場合:
6. 無効な入力の処理
except ValueError:
print("無効な入力です。数値を入力してください。")
except
ブロック:- ユーザーが数値以外を入力した場合(例: 文字列や記号)、
ValueError
が発生します。 - このエラーをキャッチして、「無効な入力」とメッセージを表示し、ゲームを続行します。
- ユーザーが数値以外を入力した場合(例: 文字列や記号)、
プログラムの動作フロー
- ゲームの開始:
- 1~100のランダムな数字を生成します。
- ユーザーの入力:
- ユーザーに予想する数字を入力させます。
- 入力が不正(例: “abc”)の場合、エラーメッセージを表示して再入力を求めます。
- ヒントの表示:
- 入力値が小さい場合:「小さすぎます!」
- 入力値が大きい場合:「大きすぎます!」
- 正解の場合:
- 秘密の数字と一致したら「正解です!おめでとうございます!」と表示し、ゲームを終了します。
実行例
1. 正解までの流れ
数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想: 50
小さすぎます!
あなたの予想: 75
大きすぎます!
あなたの予想: 63
小さすぎます!
あなたの予想: 70
正解です!おめでとうございます!
2. 無効な入力をした場合
数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想: abc
無効な入力です。数値を入力してください。
あなたの予想: 50
小さすぎます!
ポイント
- ランダムな数字生成:
random.randint()
を使ってランダムな数値を生成します。
- 例外処理:
- ユーザーが数値以外を入力してもプログラムが強制終了せず、エラーメッセージを表示して再入力を求めるため、安全性が高い設計です。
- インタラクティブな設計:
- 小さすぎる、大きすぎるといったヒントを与え、ユーザーがゲームを楽しめるよう工夫されています。
コメント