デジタルこどもBASEのロゴ 特定非営利活動法人デジタルこどもBASE 📚 目次
第59回 Lv2 ⏱ 20〜25分

数当てゲームを関数化しよう

🎯 きょうのミッション

第26回の数当てゲームを関数化して整理します。さらに「もう一度遊ぶ?」のループを追加して、何回でも遊べるゲームに進化させます。

🧠 できるようになること

  • 既存のコードを関数化できる
  • while で「もう一度遊ぶ」ループを書ける
  • 完成度の高い小さなゲームを作れる

🧰 用意するもの

🖼 できあがり

数当てゲームを何回でも遊べます。1回終わるごとに「もう一度?」と聞かれ、Yesなら新しい答えで再開。

📺 実行結果
== 数当てゲーム ==
1〜10を当ててね: 5
もっと大きい数だよ
1〜10を当ててね: 8
🎉 正解!
もう一度?(yes/no): no
遊んでくれてありがとう!

🚀 やりかた

  1. def play_game(): 1ゲーム分の関数を作る。
  2. 答えを random で決定。
  3. while ループで「正解するまで」予想を受け付ける。
  4. def main(): で「もう一度?」のループ。
  5. main() を呼んでスタート。

🐍 きょうのコード

Python main.py
import random

def play_game():
    answer = random.randint(1, 10)
    while True:
        guess = int(input("1〜10を当ててね: "))
        if guess == answer:
            print("🎉 正解!")
            break
        elif guess < answer:
            print("もっと大きい数だよ")
        else:
            print("もっと小さい数だよ")

def main():
    print("== 数当てゲーム ==")
    while True:
        play_game()
        again = input("もう一度?(yes/no): ")
        if again != "yes":
            break
    print("遊んでくれてありがとう!")

main()
▶ Trinketを開いて動かす

上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。

💡 きょうのポイント

random.randint(1, 10)1〜10の整数をランダムに返します(10含む)。関数化することで「1ゲーム分」と「全体の流れ」が分かれて読みやすくなりました。

🎮 チャレンジ

  • 範囲を1〜100に広げて、当てるまでの回数を数えよう
  • 「3回までしか挑戦できない」モードを追加しよう
  • 難易度を選べるようにしよう(1〜10、1〜50、1〜100)

🔁 ふりかえり

  • 関数化してコードはどう変わった?読みやすくなった?
  • random.choicerandom.randint の違いは?
  • 次回はミニ作品。何を作るかワクワクしている?

👨‍👩‍👧 おうちの人・先生へ

  • 準備:なし。
  • つまずきポイントrandom.randint(1, 10) は10含む(range と違う)。
  • 声かけ例:「これだけでもう完成度の高いゲーム」と達成感を与えて。