PythonでLOTO6予想アプリを作成

Pythonで数字当てゲームで当たらず悩んでいるウサギ

こんにちは、Python初心者のハナマルコです。

Pythonでゲームが作れるって話を聞きました。ゲーム好きのハナマルコとしては、これはやらないと!ってことで、いつものようにチャッピー先生に相談しました。

ハナマルコ

チャッピー先生!Pythonでゲームが作れるってホント?

チャッピー先生

はい、できます。初心者向けにテキストベースで遊べるゲームを紹介します。

今回は、私がPythonで実際に作った「数当てゲーム(ナンバーズ風)」と「LOTO6予想アプリ」の2本立てをご紹介します。イライラしながらもなんとか動いたコードと、何度も外した失敗談もたっぷり詰め込みました!

実践シリーズを初回から読みたい方:
Pythonで何ができる?初心者がChatGPTと一緒に調べてみた(実践0日目)

読みたいところに飛べる目次

Pythonで数当てゲームを作って遊ぼう|ナンバーズ風ロジックを実装

ゲーム概要

Pythonで作った数当てゲームは、3桁の数字(各桁は0〜9で重複なし)をコンピュータがランダムに選び、それを10回以内で当てるというもの。

  • 数字と位置が正解:Hit
  • 数字は正解だけど位置が違う:Blow

というルールです。位置と数字を推理しながら絞っていく感じ。

完成したコード(コピペでOK!):Google Colabにコピペで動きます。

import random

def generate_number():
    return ''.join(random.sample("0123456789", 3))

def get_feedback(secret, guess):
    hit = sum(s == g for s, g in zip(secret, guess))
    blow = sum(min(secret.count(d), guess.count(d)) for d in set(guess)) - hit
    return hit, blow

def is_valid_guess(guess):
    return (
        guess.isdigit() and
        len(guess) == 3 and
        len(set(guess)) == 3
    )

print("🔍 推理型ナンバーズ3(数字と位置を当てよう)")
print("3桁の数字を当ててください(重複なし)")

secret = generate_number()
MAX_TRIES = 10

for attempt in range(1, MAX_TRIES + 1):
    while True:
        guess = input(f"[{attempt}回目] 3桁の数字: ")
        if is_valid_guess(guess):
            break
        print("⚠️ 無効な入力。3桁で数字の重複はなし。")

    hit, blow = get_feedback(secret, guess)
    print(f"🔎 結果: {hit} Hit / {blow} Blow")

    if hit == 3:
        print(f"🎉 正解!{attempt}回目でクリア!")
        break
else:
    print(f"😢 正解は {secret} でした。")

Google Colabについて詳しく知りたい方は:
【実践1日目】無料で始めるPython学習:ChatGPTと初心者がステップアップする方法

ポイント解説

  • random.sample():重複なしでランダムな数字を取り出す。ここがナンバーズらしさの肝!
  • zip()sum():位置と数字の一致(Hit)を数える魔法コンビ。
  • set()min():重複しない数字をBlowとして数える工夫。
  • input():ユーザーからの数字入力。ちゃんと検証してくれる親切設計。

プレイ実況:ハナマルコ、ブチギレル!

[1回目] 3桁の数字: 123
🔎 結果: 0 Hit / 1 Blow
[2回目] 3桁の数字: 456
🔎 結果: 1 Hit / 0 Blow
[3回目] 3桁の数字: 489
🔎 結果: 0 Hit / 2 Blow
[4回目] 3桁の数字: 849
🔎 結果: 1 Hit / 1 Blow
[5回目] 3桁の数字: 894
🔎 結果: 0 Hit / 3 Blow

ハナマルコ

はああああっ!?なんで!!惜しいのに正解できない!チャッピー!もうやだ!

チャッピー先生

順番が近いですよ!あと一歩です、がんばってください。

[9回目] 3桁の数字: 984
🔎 結果: 3 Hit / 0 Blow
🎉 正解!9回目でクリア!

ハナマルコ

(涙)やっと…やっと終わった…Python嫌いだけど、ちょっと好きかも…

Pythonで作るLOTO6予想アプリ|データ分析で統計体験

ゲーム概要

「出やすい数字をカウントして、その中から6つ選ぶ」という予測型ロジック。実際に当たるかはさておき、Pythonで統計っぽいことを体験できます。

完成したコード(コピペOK!):Google Colabにコピペで動きます。

import random
from collections import Counter

def generate_fake_history():
    history = []
    for _ in range(100):
        numbers = sorted(random.sample(range(1, 44), 6))
        history.append(numbers)
    return history

def count_frequency(history):
    flat = [num for line in history for num in line]
    counter = Counter(flat)
    return counter.most_common()

def generate_smart_pick(freq_data, top_n=20):
    top_numbers = [num for num, _ in freq_data[:top_n]]
    prediction = sorted(random.sample(top_numbers, 6))
    return prediction

history = generate_fake_history()
frequency = count_frequency(history)

print("📊 頻出数字ランキング(上位10):")
for i, (num, count) in enumerate(frequency[:10], 1):
    print(f"{i:>2}: 数字 {num:<2} が {count} 回出現")

print("\n🎯 今回のおすすめ予想:")
for i in range(5):
    prediction = generate_smart_pick(frequency)
    print(f"{i+1}. {prediction}")

Google Colabについて詳しく知りたい方は:
【実践1日目】無料で始めるPython学習:ChatGPTと初心者がステップアップする方法

ポイント解説

  • collections.Counter:数字の出現回数を数えてくれる頼れるやつ。
  • list内包表記:2次元リストを1次元に。最初は混乱したけど慣れると便利!
  • most_common():よく出る数字をランキング形式で取得。
  • random.sample():予想の組み合わせも完全ランダムじゃなく、よく出る数字から選ぶ工夫。

実行してみた結果

📊 頻出数字ランキング(上位10):
1: 数字 7 が 16 回出現
2: 数字 22 が 15 回出現

🎯 今回のおすすめ予想:
1: [4, 7, 11, 22, 33, 36]

ハナマルコ

よっしゃ!これで当たったら宝くじ生活だ!

当たりませんでした。(即死)

でも「データから傾向を見て選ぶ」という行為だけで、分析してる感がすごかった!

初心者でも、イラっとしながら楽しめるPython

Pythonを始めたばかりの私は、記号を見るだけで蕁麻疹が出そうでした。でも、ゲームを目標にすることで「こうすれば動くんだ!」と理解が進みました。

もちろん何度もミスしてエラー出して、チャッピーに泣きつきましたけど、気づけばfordefが読めるように。

ハナマルコ

私、コピペだけじゃなく意味も少しずつわかってきたかも…

まとめ

この2つのゲームで学んだPythonの主な要素

  • import random:ランダムな値を生成するために使用
  • collections.Counter:リストの要素をカウントしてランキングを作る
  • for文 / if文 / 関数定義 (def):基本構文をくり返し使うことで自然と覚えられた!
  • input()とバリデーションチェック:ユーザーとのやりとりも体験

もしあなたが「Python興味あるけど難しそう…」と思っていたら、まずはこういう遊び感覚のミニゲームから始めてみてください。

ハナマルコでもできたんです。あなたも、絶対にできます!

最後まで読んでいただき、ありがとうございました!

iPhoneだけでPythonを動かしたい方は:
Pythonistaアプリレビュー|iPhoneでPythonを書く方法と初心者のつまずきポイント

実践シリーズで学習を続ける:
【実践0日目】Python入門:ChatGPTと一緒に「Pythonとは?」を調べてみた
【実践1日目】無料で始めるPython学習:ChatGPTと初心者がステップアップする方法
【実践2日目】Python超入門:ChatGPTと学ぶ割り勘・時間計算スクリプト
【実践3日目】Pythonで家計簿&残業代計算:初心者でもできる生活支援スクリプト
【実践4日目】Python初心者向け:安全なパスワード自動生成スクリプトを作ってみた
【実践5日目】Python✕スプレッドシートで作るTODO管理ツール
【実践6日目】初心者がつまずくPythonエラーTOP10をチャッピー先生が解説
【実践7日目】Python初心者向け!Colabでアニメ風抽選ルーレットを作ろう
【実践8日目】ゲームで学ぶPython入門|数当て&LOTO6予想に挑戦!今ココ

当ブログは基本的にリンクフリーです。リンクを行う場合の許可や連絡は不要です。

Pythonで数字当てゲームで当たらず悩んでいるウサギ

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
読みたいところに飛べる目次