SerchCode Pro
コード解説 SQLチェッカー JSON生成 JSON整形 RegExテスター CSS Shadow カラー変換 CRON生成 Base64変換 ブログ
SerchCode Pro
コード解説 🔍 SQLチェッカー 🔍 JSON生成 🔧 JSON整形 🔧 RegExテスター 💻 CSS Shadow 🔲 カラー変換 🔲 CRON生成 💻 Base64変換 🖌 ブログ 📖

このサイトについて プライバシーポリシー
ダークモード ライトモード

【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コード解説ツールを使ってみる →

この記事を書いた人

p>ハンドルネーム:雲海 墨汁(うんかい ぼくじゅ)

プログラミング独学で挫折後、上京しWeb系企業に就職。4年間、主にバックエンド開発に従事し、
大規模サービスの設計から運用までを経験。
現在は、自身の学習経験を活かし、初心者向けのツール開発に情熱を注いでいる。

詳しいプロフィールを見る →
← ブログ一覧に戻る
このサイトについて ブログ 特定商取引法に基づく表記 プライバシーポリシー
© 2025 株式会社Serchcode . All Rights Reserved.