You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 22:36:08