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
相关产品推荐
相关产品推荐

