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

Python课程项目商店游戏报错:选非番茄商品仍购买番茄问题求助

问题原因

  • or条件写法错误:Python中input(xxx) == 'Y' or 'y'的逻辑不是判断输入是否等于Y或y,而是会被拆成两部分判定:(输入等于'Y') 或者 ('y'是否为真),非空字符串的布尔值恒为真,所以第一个if条件永远成立,直接判定为购买番茄。
  • 重复调用input问题:你在每个if/elif分支里都重新调用了一次input,就算第一个条件不成立,后续分支也会重新弹出输入提示,不会用第一次输入的结果做判断。
  • 逻辑结构错误:最后判断用户不进入商店的代码写在了「进入商店」的if分支内部,永远不会触发正确的离开逻辑。

修正后代码

money = 50  # 玩家初始持有金额
print("欢迎来到我们的商店!")
print(f"你的钱包里有{money}美元。")

# 先获取是否进入商店的输入,统一转小写判断,无需写多个or
enter_choice = input("你要进入商店吗? Y/N ").strip().lower()
if enter_choice == 'y':
    print("你进入了商店。")
    # 只获取一次商品选择输入,存到变量里后续复用
    buy_choice = input("你现在在蔬菜区,你想买什么?番茄(5美元)、土豆(7美元)还是黄瓜(10美元) ").strip().lower()
    # 用in判断输入是否属于对应商品的可选值集合
    if buy_choice in {'tomatoes', 'tomato', 't', '番茄', '番', 'q'}:
        balance = money - 5
        print(f"你购买了番茄,剩余{balance}美元。")
    elif buy_choice in {'potatoes', 'potato', 'p', '土豆', '土', 't'}:
        balance = money - 7
        print(f"你购买了土豆,剩余{balance}美元。")
    elif buy_choice in {'cucumbers', 'cucumber', 'c', '黄瓜', '黄', 'h'}:
        balance = money - 10
        print(f"你购买了黄瓜,剩余{balance}美元。")
    else:
        print("输入的商品不存在,你没有购买任何东西。")
else:
    print("你转身离开了商店。\n")

内容的提问来源于stack exchange,提问作者hiyariyt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:06