Python双输入循环实现开门抽奖游戏逻辑错误修复咨询
开门抽奖游戏代码修正方案
原代码存在的问题
jackpot == 1分支执行完后,既没有询问用户是否继续,也没有重新获取门牌号输入,会一直循环使用同一个门牌号开奖,直到抽到jackpot == 0才会进入后续流程play == "1"的分支只有无效的相等判断语句,没有终止循环的逻辑,导致主动退出功能不生效- 额外隐藏问题:错误次数累计到3次后没有自动终止的触发逻辑、输入为空时没有重新引导用户输入门牌号、原
else分支里miss == "3"是无效判断,永远不会执行
修正后的完整代码
import random total = 0 miss = 0 while miss < 3: # 每次开新门先获取用户输入 door = input("Enter a character from A to Z representing the door you wish to open:") # 校验输入非空 if len(door.strip()) == 0: print("输入无效,请重新尝试") continue jackpot = random.randint(0, 1) if jackpot == 1: prizeMoney = random.randint(500, 1000) total += prizeMoney print(f"Behind Door {door} is {prizeMoney}$") else: miss += 1 print(f"Sorry, there is no hidden money behind Door {door}. This is your {miss} miss.") # 未到3次错误时询问用户是否继续 if miss < 3: play = input("Do you wish to quit (1) or open another door (2)?") if play == "1": # 输入1直接终止循环 break # 循环结束后统一输出结果 if miss >= 3: print(f"Sorry the game is over. You win ${total}. Try again.") else: print(f"Congratulations!! You have won ${total}.")
核心调整说明
- 把门牌号输入逻辑移到循环内部,每次开新门都重新获取用户输入,避免重复使用同一个门牌号循环开奖
- 不管是否中奖,每次开奖后只要没到3次错误,都统一询问用户是否继续,输入1直接触发
break终止循环,解决主动退出不生效的问题 - 循环结束后统一判断结束原因(主动退出/累计3次猜错),输出对应提示,删除原代码中无效的分支逻辑
- 增加输入空值的校验逻辑,输入为空时提示重新输入,不会进入开奖流程
内容的提问来源于stack exchange,提问作者Adarsh Ajit
相关产品推荐
相关产品推荐

