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

如何让Python文字冒险游戏商店保持运行直到输入'n'退出

文字冒险游戏商店多件购买功能修复

问题原因

现有代码仅将「无效输入重输」做了循环处理,整个购买交互流程只执行1次:用户完成一次有效输入(不管是买道具还是输错重输后买道具),代码跑完对应分支就直接退出shop()函数回到主流程,所以每次只能买1件道具,必须重新触发商店入口才能买第二件。

修改方案

给整个商店交互逻辑套一层外层死循环,仅当用户输入n时触发循环退出,其余操作(买道具、换装备)执行完后自动回到购买输入提示,实现连续操作。

  • 保留原有无效输入校验的内层循环逻辑,不需要改动
  • 原有购买、装备的业务判断逻辑不需要调整,只需要把所有逻辑移入外层循环
  • 仅在用户输入n的分支执行break跳出外层循环,退出商店返回主游戏流程

修改后核心代码参考

def shop():
    # 此处保留你原有的商店欢迎语、商品列表打印等初始化逻辑即可
    while True:
        buy_item = input('\nWhat would you like to buy? Enter \'n\' to close shop,\'e\' to equip something, \'1\' for dagger, \'2\' for short sword, \'5\' for leather armour and so on. ').lower()
        possible_answers = ['1', '2', '3', '4', '5', '6', '7', '8', 'n', 'e']
        # 原有无效输入校验逻辑保留
        while buy_item not in possible_answers:
            print('Invalid answer')
            buy_item = input('What would you like to buy? Enter \'n\' to close shop, \'e\' to equip something, \'1\' for dagger, \'2\' for short sword, \'5\' for leather armour and so on. ').lower()
        
        # 原有业务判断逻辑整体移入,仅在n分支加break
        if buy_item == '1':
            if shop_items[0].get('dagger cost') > player['gold']:
                print('Not enough gold!')            
            else:
                player['weapons'].append('dagger')
                player['gold'] -= shop_items[0].get('dagger cost')
                print(f'You just bought dagger for {shop_items[0].get("dagger cost")}')
                print(f'Gold: {player["gold"]}')
        elif buy_item == '2':
            # 此处补全你原有的短剑购买逻辑,和匕首逻辑结构一致即可
            pass
        elif buy_item == '5':
            # 此处补全你原有的皮甲购买逻辑
            pass
        elif buy_item == 'e':
            # 此处补全你原有的装备操作逻辑
            pass
        elif buy_item == 'n':
            print('Thank you for visiting the shop. You can always come back by entering \'s\'.')
            break # 仅此处触发商店退出

补充说明

  • 其余编号商品(3/4/6/7/8)的购买逻辑直接按匕首的分支格式补全即可,不需要额外调整
  • 所有购买、装备操作的分支不要加break,执行完对应逻辑后会自动回到下一轮购买提示,支持连续购买多件道具
  • 可以按需在每次购买完成后打印当前背包道具、剩余金币,减少用户记忆成本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:27:29