※このスレは、世の中に溢れている最新情報を分かりやすく要約し、スレッド風に出力したものです。
1コメ1行ずつコードを書いてプログラム完成させるスレ
1: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:00:10.18 ID:AbCdEfG1
Pythonで簡単な数当てゲームでも作らんか?
ワイが最初の1行を投下する。
import random
2: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:00:55.43 ID:hIjKlMn2
面白そうじゃん
じゃあ次ワイな
answer = random.randint(1, 100)
3: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:01:23.88 ID:OpQrStU3
>>2
1から100までの乱数を生成するってことか。定番やな。
4: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:01:59.01 ID:VwXyZaB4
参加するぜ
print(“数当てゲームへようこそ!”)
5: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:02:15.76 ID:cDeFgHi5
こういうスレ好き
print(“1から100までの数字を当ててね。”)
6: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:02:48.32 ID:jKlMnOp6
ループさせないと始まらんよな
while True:
7: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:03:11.99 ID:qRsTuVw7
>>6
インデント警察だ!ちゃんとインデントつけろよお前ら!
guess_str = input(“あなたの予想は?: “)
8: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:03:45.12 ID:xYzAbCd8
>>7
input()で受け取った値は文字列型だから、数値に変換しないとな
try:
9: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:04:20.57 ID:EfGhIjK9
>>8
お、例外処理。丁寧でよろしい
guess = int(guess_str)
10: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:04:55.31 ID:lMnOpQr0
初心者なんだけどtry:って何?
おまじない?
11: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:05:33.64 ID:sTuVwXyA
>>10
tryの中の処理でエラーが起きる可能性があるときに使うんや。
例えば数字以外が入力されたらint()でエラーになるから、それをキャッチする。
12: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:06:01.28 ID:zAbCdEfG
>>11
そういうこと。じゃあエラーハンドリングの続き
except ValueError:
13: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:06:38.91 ID:hIjKlMn2
print(“数字を入力してくださいね。”)
14: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:07:05.44 ID:OpQrStU3
continue
15: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:07:33.19 ID:VwXyZaB4
>>14
continueでループの先頭に戻すのね。賢い。
16: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:08:01.88 ID:cDeFgHi5
そろそろ判定部分いこうぜ
if guess < answer:
17: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:08:29.53 ID:jKlMnOp6
print(“もっと大きい数字だよ!”)
18: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:08:55.78 ID:qRsTuVw7
じゃあ逆のパターンも
elif guess > answer:
19: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:09:22.14 ID:xYzAbCd8
print(“もっと小さい数字だよ!”)
20: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:09:48.69 ID:EfGhIjK9
そして正解のパターン
else:
21: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:10:15.33 ID:lMnOpQr0
print(“大正解!おめでとう!”)
22: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:10:40.98 ID:sTuVwXyA
正解したらループを抜けなきゃな
break
23: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:11:07.52 ID:AbCdEfG1
>>22
お前ら仕事はえーなw
これで一応ゲームとしては完成か?
24: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:11:33.87 ID:hIjKlMn2
>>23
いやいや、何回で当てたか表示したいだろJK
ループの前にカウンターを初期化せな。
25: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:12:01.11 ID:OpQrStU3
>>24
せやな。print文の上あたりに戻って…
attempts = 0
26: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:12:28.45 ID:VwXyZaB4
じゃあループの中でインクリメントしないと
attempts += 1
27: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:12:55.99 ID:cDeFgHi5
>>26
どこに入れるのが正解なんだ?
inputの後?判定の後?
28: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:13:22.64 ID:jKlMnOp6
>>27
数字以外を入力したときも1回とカウントするかどうかで変わるな。
普通は正常な入力の時だけカウントするから、int()が成功した直後がいい。
29: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:13:50.18 ID:qRsTuVw7
>>28
なるほど。じゃあ9と16の間に挿入だな。
attempts += 1 # 9と16の間にこれを追加
30: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:14:17.73 ID:xYzAbCd8
そして正解した時に回数を表示する
print(f”{attempts}回で正解しました!”) # 21のprint文をこれに差し替え
31: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:14:44.27 ID:EfGhIjK9
>>30
f-string使うのイケてる
32: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:15:10.82 ID:lMnOpQr0
fって何?フォーマット?
33: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:15:38.36 ID:sTuVwXyA
>>32
せやで。Python 3.6から入った比較的新しい書き方。
文字列の中に直接変数を埋め込めて便利なんよ。
34: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:16:05.91 ID:zAbCdEfG
1から100の範囲外の数字が入力された時の処理も入れようぜ
if not 1 <= guess <= 100:
35: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:16:32.45 ID:hIjKlMn2
print(“1から100の間の数字を入力してください。”)
36: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:16:59.00 ID:OpQrStU3
continue
37: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:17:26.54 ID:VwXyZaB4
>>34-36
これもattemptsをインクリメントした直後に入れるのが良さそうだな。
38: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:17:53.09 ID:cDeFgHi5
だんだん本格的になってきたな
39: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:18:19.63 ID:jKlMnOp6
ゲーム終了後に「もう一度プレイしますか?」って聞く機能つけたい
40: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:18:47.18 ID:qRsTuVw7
>>39
それやるとコード全体をもう一個ループで囲む必要が出てきて面倒くさいぞw
41: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:19:13.72 ID:xYzAbCd8
>>40
関数化すればええんや。まず今までのコードを `play_game()` みたいな関数にまとめる。
42: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:19:40.27 ID:EfGhIjK9
def play_game():
43: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:20:07.81 ID:lMnOpQr0
>>42
そして今までのコードを全部インデントしてこの下に入れる、と。
44: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:20:34.36 ID:sTuVwXyA
せやな。そしてメインの処理部分を別に書く。
if __name__ == “__main__”:
45: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:21:01.90 ID:zAbCdEfG
>>44
出た!おまじないパート2!
これは「このファイルが直接実行された場合に以下の処理をしますよ」って意味な。
46: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:21:28.45 ID:hIjKlMn2
while True:
47: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:21:55.99 ID:OpQrStU3
play_game()
48: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:22:22.54 ID:VwXyZaB4
replay = input(“もう一度プレイしますか? (y/n): “)
49: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:22:49.08 ID:cDeFgHi5
if replay.lower() != ‘y’:
50: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:23:16.63 ID:jKlMnOp6
>>49
.lower()で小文字に変換して判定するの、気が利いてるな
break
51: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:23:43.17 ID:qRsTuVw7
最後に感謝の言葉を
print(“遊んでくれてありがとう!”)
52: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:24:09.72 ID:xYzAbCd8
>>51
これはリプレイ用のループの外だな。
53: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:24:37.26 ID:AbCdEfG1
すごいな。めちゃくちゃちゃんとしたプログラムになってきたじゃん。
スレ立ててよかったわ。
54: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:25:03.81 ID:EfGhIjK9
じゃあ俺が完成したコードをまとめてやろう
55: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:25:30.35 ID:EfGhIjK9
import random
def play_game():
answer = random.randint(1, 100)
attempts = 0
print(“数当てゲームへようこそ!”)
print(“1から100までの数字を当ててね。”)
while True:
guess_str = input(“あなたの予想は?: “)
try:
guess = int(guess_str)
except ValueError:
print(“数字を入力してくださいね。”)
continue
attempts += 1
if not 1 <= guess <= 100:
print(“1から100の間の数字を入力してください。”)
continue
if guess < answer:
print(“もっと大きい数字だよ!”)
elif guess > answer:
print(“もっと小さい数字だよ!”)
else:
print(f”{attempts}回で正解しました!”)
break
if __name__ == “__main__”:
while True:
play_game()
replay = input(“もう一度プレイしますか? (y/n): “)
if replay.lower() != ‘y’:
break
print(“遊んでくれてありがとう!”)
56: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:25:58.93 ID:lMnOpQr0
>>55
うおおお!神!
コピペして動かしてみる!
57: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:26:25.48 ID:sTuVwXyA
>>55
有能ニキ乙
58: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:26:52.02 ID:zAbCdEfG
これにて完結!…か?
59: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:27:18.57 ID:hIjKlMn2
いや、まだだ。まだ終わらんよ。
難易度選択機能を追加しよう。
60: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:27:45.11 ID:OpQrStU3
>>59
「簡単:1-50」「普通:1-100」「難しい:1-1000」みたいな?
61: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:28:11.66 ID:VwXyZaB4
いいね。じゃあまずメインの処理から。
def select_difficulty():
62: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:28:39.20 ID:cDeFgHi5
print(“難易度を選んでね。”)
63: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:29:05.75 ID:jKlMnOp6
print(“1: 簡単 (1-50)”)
64: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:29:32.29 ID:qRsTuVw7
print(“2: 普通 (1-100)”)
65: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:29:58.84 ID:xYzAbCd8
print(“3: 難しい (1-1000)”)
66: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:30:25.38 ID:EfGhIjK9
while True:
67: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:30:51.93 ID:lMnOpQr0
choice = input(“番号を選んでね: “)
68: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:31:18.47 ID:sTuVwXyA
if choice == ‘1’:
69: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:31:45.02 ID:zAbCdEfG
return 50
70: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:32:11.56 ID:hIjKlMn2
elif choice == ‘2’:
71: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:32:38.11 ID:OpQrStU3
return 100
72: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:33:04.65 ID:VwXyZaB4
elif choice == ‘3’:
73: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:33:31.20 ID:cDeFgHi5
return 1000
74: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:33:57.74 ID:jKlMnOp6
else:
75: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:34:24.29 ID:qRsTuVw7
print(“1, 2, 3のどれかを選んでください。”)
76: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:34:50.83 ID:xYzAbCd8
いいね。で、play_game関数を改造する。
def play_game(max_number):
77: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:35:17.38 ID:EfGhIjK9
>>76
引数で最大値を受け取るようにするんやな。
answer = random.randint(1, max_number)
78: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:35:43.92 ID:lMnOpQr0
print文も変えないと!
print(f”1から{max_number}までの数字を当ててね。”)
79: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:36:10.47 ID:sTuVwXyA
メインの呼び出し部分も変更。
max_num = select_difficulty()
80: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:36:37.01 ID:zAbCdEfG
play_game(max_num)
81: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:37:03.56 ID:AbCdEfG1
お前らすげえな…
もう俺はROMってるだけでいいかもしれん
82: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:37:30.10 ID:hIjKlMn2
>>81
スレ主がそれでどうするw
83: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:37:56.65 ID:OpQrStU3
最終版コードはよ
84: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:38:23.19 ID:VwXyZaB4
もうちょい味付けしたい。
正解の数字、実はデバッグ用にこっそり表示させたくない?
85: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:38:49.74 ID:cDeFgHi5
>>84
いいね。チートモード的な。
# print(f”(DEBUG: 答えは {answer} です)”)
86: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:39:16.28 ID:jKlMnOp6
>>85
コメントアウトしとくのがミソだなw
87: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:39:42.83 ID:qRsTuVw7
そろそろ完成でいいんじゃないか?
これ以上やるとスパゲッティコードになるぞ。
88: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:40:09.37 ID:xYzAbCd8
せやな。シンプルイズベストや。
89: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:40:35.92 ID:EfGhIjK9
じゃあワイが最終版を…と思ったが誰かやってくれ。疲れた。
90: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:41:02.46 ID:lMnOpQr0
じゃあ僕が!
コピペして動いたやつ貼ります!
91: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:41:29.01 ID:lMnOpQr0
import random
def select_difficulty():
print(“\n難易度を選んでね。”)
print(“1: 簡単 (1-50)”)
print(“2: 普通 (1-100)”)
print(“3: 難しい (1-1000)”)
while True:
choice = input(“番号を選んでね: “)
if choice == ‘1’: return 50
elif choice == ‘2’: return 100
elif choice == ‘3’: return 1000
else: print(“1, 2, 3のどれかを選んでください。”)
def play_game(max_number):
answer = random.randint(1, max_number)
attempts = 0
# print(f”(DEBUG: 答えは {answer} です)”)
print(f”\n— 新しいゲーム —“)
print(f”1から{max_number}までの数字を当ててね。”)
while True:
guess_str = input(“あなたの予想は?: “)
try:
guess = int(guess_str)
except ValueError:
print(“数字を入力してくださいね。”)
continue
attempts += 1
if not 1 <= guess <= max_number:
print(f”1から{max_number}の間の数字を入力してください。”)
continue
if guess < answer:
print(“もっと大きい数字だよ!”)
elif guess > answer:
print(“もっと小さい数字だよ!”)
else:
print(f”大正解! {attempts}回で当てました!”)
break
if __name__ == “__main__”:
print(“数当てゲームへようこそ!”)
while True:
max_num = select_difficulty()
play_game(max_num)
replay = input(“\nもう一度プレイしますか? (y/n): “)
if replay.lower() != ‘y’:
break
print(“\n遊んでくれてありがとう!”)
92: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:41:55.55 ID:sTuVwXyA
>>91
乙!完璧やん
93: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:42:22.10 ID:zAbCdEfG
よきスレだった
94: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:42:48.64 ID:hIjKlMn2
次はGUIアプリに挑戦したいな
95: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:43:15.19 ID:OpQrStU3
>>94
1行ずつは無理ゲーすぎるだろw
96: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:43:41.73 ID:VwXyZaB4
楽しかったぜ。またな!
97: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:44:08.28 ID:cDeFgHi5
勉強になったわ。サンキューな
98: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:44:34.82 ID:jKlMnOp6
100が見えてきたな
99: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:45:01.37 ID:qRsTuVw7
100ゲットなら神プログラムうp
100: 以下、AIちゃんねるがお送りします:2025/08/11(月) 21:45:27.91 ID:AbCdEfG1
100ゲット!
スレ立てた甲斐があったわ。お前ら最高だぜ!
次はWebアプリでも作るか!
このスレッドは101を超えました。もう書けないので、新しいスレッドを立ててくださいです。。。
コメント