【Python初心者向け】コピペで動く!数当てゲームの作り方|プログラミングの基本を学ぶ
公開日: 2025年10月9日
「Pythonの forループや if文は理解した。でも、いざ何か作ろうとすると、どこから手を付けていいか分からない…」 プログラミング学習で多くの人が最初にぶつかる「文法から実践への壁」。あなたも今、そんな悩みを抱えていませんか?
その壁を乗り越える最良の方法は、小さなプログラムを一つ、自分の手で作り上げてみることです。
この記事では、Pythonの標準機能だけで作れるシンプルな「数当てゲーム」を題材に、アイデアをどうやってコードに落とし込んでいくのか、その思考プロセスをステップ・バイ・ステップで解説します。 この記事を読み終える頃には、あなたはプログラミングの基本的な「組み立て方」をマスターしているはずです。
🎯 ステップ1:完成形と遊び方を知る
まずは、今日作るゲームの完成形を見てみましょう。コードをコピペして game.py として保存し、ターミナルで `python game.py` と実行すれば、すぐに遊べます。
実行結果の例
1から100までの数字を当ててね! 予想した数字を入力してください: 50 もっと大きい数字だよ 予想した数字を入力してください: 75 もっと小さい数字だよ 予想した数字を入力してください: 60 ... ... 予想した数字を入力してください: 68 正解!おめでとう!
シンプルですが、プログラミングの重要な要素がぎゅっと詰まっています。それでは、このコードを一つずつ分解していきましょう。
完成コード全体
import random
# 1から100までのランダムな整数を生成
answer = random.randint(1, 100)
print("1から100までの数字を当ててね!")
while True:
try:
guess_str = input("予想した数字を入力してください: ")
guess_num = int(guess_str)
if guess_num < answer:
print("もっと大きい数字だよ")
elif guess_num > answer:
print("もっと小さい数字だよ")
else:
print("正解!おめでとう!")
break # ループを抜ける
except ValueError:
print("数字を入力してくださいね。")
🛠️ ステップ2:コードを分解して「思考プロセス」を学ぶ
さて、この15行ほどのコードが、どのような考え方で組み立てられているのかを見ていきましょう。
1. 準備:答えとなる「ランダムな数字」を作る
まずゲームには「答え」が必要です。毎回同じ数字ではつまらないので、プログラム実行のたびに違う数字を答えにしたいですよね。 そこで登場するのがPythonのrandomライブラリです。
import random
# 1から100までのランダムな整数を生成
answer = random.randint(1, 100)
- import random: Pythonに元々備わっている「ランダム機能」を使いますよ、という宣言です。
- random.randint(1, 100): 1から100までの範囲で、ランダムな整数を1つ選び出してくれます。それを answer という変数(箱)に入れています。
2. 骨格:「正解するまで無限に繰り返す」ループを作る
このゲームの核は「ユーザーが正解するまで、何度も入力を促す」という繰り返し処理です。何回で正解するか分からないので、終わる条件が決まっていないループ、つまり無限ループを使います。
while True:
# ... この中にゲームの処理を全部書く ...
while True: は、この中の処理を永遠に繰り返すための最もシンプルな書き方です。正解した時に break という命令で、このループから脱出させます。
3. 入力と変換:ユーザーの答えを受け取り、「数字」に変える
ループの中で、ユーザーからの入力を受け取ります。
guess_str = input("予想した数字を入力してください: ")
guess_num = int(guess_str)
input() で受け取ったデータは、たとえ `50` と入力されても、文字列("50")として扱われます。これを大小比較するためには、int() を使って数値(50)に変換する必要があります。この「型の変換」はプログラミングの基本であり、エラーの原因になりやすい最重要ポイントです。
4. 分岐:答えとユーザーの予想を比べる
いよいよゲームの心臓部です。if, elif, else を使って、ユーザーの入力が答えより大きいか、小さいか、等しいかを判定します。
if guess_num < answer:
print("もっと大きい数字だよ")
elif guess_num > answer:
print("もっと小さい数字だよ")
else:
print("正解!おめでとう!")
break # 正解したのでループを抜ける
条件が一つずつ上から判定され、当てはまった場所の処理が実行されます。else は「上のどの条件にも当てはまらなかった場合」、つまり guess_num と answer が等しい(正解した)場合です。
5. 防御:数字以外の入力からプログラムを守る
もしユーザーが「あいうえお」のような文字を入力したらどうなるでしょう? int("あいうえお") という変換はできないため、プログラムはエラーを出して強制終了してしまいます。 それを防ぐのが try-except構文です。
try:
# エラーが起きる可能性のある処理
guess_num = int(guess_str)
# ... (if文の比較処理) ...
except ValueError:
# ValueErrorというエラーが起きた時の処理
print("数字を入力してくださいね。")
try の中の処理を実行してみて、もし ValueError(文字を数値に変換しようとした時などに出るエラー)が発生したら、プログラムを止めずに except の中の処理を実行します。これにより、どんな入力があってもゲームが落ちない、頑丈なプログラムになります。
🚀 ステップ3:改造して自分だけのゲームにしよう!
基本形が完成したら、少し改造して機能を追加してみましょう。プログラミングの楽しさは、この「改造」にあります。
- 挑戦1:試行回数を表示する
ループの外に count = 0 というカウンター変数を用意し、ループの中で毎回 count += 1 します。正解した時に「〇回で正解しました!」と表示してみましょう。 - 挑戦2:ゲームオーバーを追加する
試行回数が10回を超えたら、「残念!正解は〇〇でした」と表示してゲームを終了させてみましょう。if count >= 10: のような条件分岐を追加することになります。
まとめ
今回は、シンプルな「数当てゲーム」の作り方を通して、プログラミングの基本的な組み立て方を学びました。
- random で外部機能を取り込み、
- whileループで処理の骨格を作り、
- inputでユーザーと対話し、
- intでデータを適切な形に整え、
- if文で条件に応じて振る舞いを変え、
- try-exceptで予期せぬエラーから身を守る。
どんなに複雑なプログラムも、このような小さな要素の組み合わせでできています。 まずはこの数当てゲームを、ぜひあなた自身の手で改造してみてください。その小さな一歩が、あなたを「コードが書ける人」から「ソフトウェアを開発するエンジニア」へと変える、大きな飛躍に繋がりますよ。
プログラミング学習に必須ツール!
記事で紹介したコードがよく分からなかったり、ご自身のコードについてもっと知りたい場合は、AIコード解説ツールが便利です。コードを貼り付けるだけで、AIが日本語で分かりやすく解説します。
AIコード解説ツールを使ってみる →