前提・実現したいこと
pythonでヒットアンドブローゲームを作ろうとしています。
if文を用いてヒットなのかブローなのかを判定する際、なぜかif文がまるっと無視されてしまいます。
エラーメッセージが出るわけではなく、ただ計算されずに終わってしまうという感じで、原因を突き止められずに困っています。
該当のソースコード
#coding:shift-jis import random print('ヒットアンドブローゲームです。4桁の数字を当ててね。降参するときは 0 を入力してください') #相手の数字 enemy_number = [] for i in range(4): num =random.randint(0,9) enemy_number.append(num) #挑戦回数の初期値 try_number = 0 while True: #入力 my_number = input(str(try_number + 1) + '回目:数字を入力してください:') #文字が入っている時の処理 if my_number.isdigit() == False: print('4桁の数字を入力してください') #降参した時の処理 elif int(my_number) == 0: enemy_Num = ''.join(map(str, enemy_number)) print('正解は ' + enemy_Num + ' でした。\n\nお疲れさまでした。') break #4桁じゃないときの処理 elif len(my_number) != 4: print('4桁の数字を入力してください') #判定 else: try_number += 1 hit = 0 blow = 0 for j in range(4): #ヒットの判定(スキップされてしまう) if enemy_number[j] == my_number[j]: hit += 1 #ブローの判定 else: n = 0 while n < 4: if j == n: n += 1 if n == 4: break if enemy_number[j] == my_number[n]: ←スキップされてしまう blow += 1 break n += 1 #正解の判定 if hit == 4: print('正解です!おめでとう!\n正解まで ' + str(try_number) + ' 回でしたね。') break #判定結果の表示 print('Hit = ' + str(hit) + ', Blow = ' + str(blow))
試したこと
インデントを整えたり、丸々書き直したりしましたが一向に改善されません。。。
初学者のため不出来な点があると思いますが、もし原因など見当つく方がいましたら教えていただけないでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/23 09:25