前提
google colaboratoryで指スマ(いっせーので)を作っている際、while文のbreakの際にエラーが出てしまう。(1か月前に始めた初心者なのでめちゃくちゃ簡単なコードしか使ってません。)
実現したいこと
・2回(指の本数が)当たったらbreakしてゲームが終わる
発生している問題・エラーメッセージ
UnboundLocalError Traceback (most recent call last) <ipython-input-7-29579826d82f> in <module> 41 print(" ") 42 print(" ") ---> 43 yubisuma() 44 if n == 2: 45 print("おめ") <ipython-input-7-29579826d82f> in yubisuma() 15 print("CPUは", bot , "本あげたよ。") 16 print("あたり。一本のけてね。") ---> 17 n += 1 18 if people + bot != human: 19 print("CPUは", bot , "本あげたよ。") UnboundLocalError: local variable 'n' referenced before assignment
該当のソースコード
#randomのインポート import random #breakの際の指の本数の定義 n = 0 nm = 0 #指スマ関数の定義(自分の番) def yubisuma(): print("最初に何本出すか入力してね。") people = int(input("ゆびすま・・・(あげる本数)")) print(" ") print("合計全員で何本あげるか予想してね。") human = int(input("ゆびすま・・・(みんなとの合計)")) bot = random.randint(0,2) if people + bot == human: print("CPUは", bot , "本あげたよ。") print("あたり。一本のけてね。") n += 1 if people + bot != human: print("CPUは", bot , "本あげたよ。") print("残念。") #指スマ関数の定義(CPUの番) def yubisuma2(): print("次はCPUの番だよ。") print("何本出すか入力してね。") people = int(input("ゆびすま・・・(あげる本数)")) print(" ") cpu = random.randint(0,4) bot = random.randint(0,2) if people + bot == cpu: print("CPUは", bot , "本あげたよ。") print("CPUは", bot , "本といったよ。") print("当たったので1本のけるよ。") nm += 1 if people + bot != cpu: print("CPUは", bot , "本あげたよ。") print("CPUは", cpu , "本といったよ。") print("残念。") #関数を動かす。 while True: print(" ") print(" ") yubisuma() if n == 2: print("おめ") else: print(" ") yubisuma2() if nm == 2: break
試したこと
・if == 0で反対にしてみた。
・google colaboratoryの新しいファイルにおんなじ物を入れてやってみた(前print関数のエラーが間違ってないのに出てたからそれ関係かなと思った。)
・インデントの確認
代表的なのはこんな感じですが3時間くらい格闘しました;;
助けてください。
補足情報(FW/ツールのバージョンなど)
・google colaboratoryを使った。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/06 07:47
2022/09/06 08:55 編集
2023/03/01 01:21 編集