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

Python地牢收集游戏中elif语句无法触发的问题排查

问题原因

你代码里的条件判断顺序搞反了。当玩家收集齐所有物品后,第一个if条件会先触发,执行打印提示后就跳过了后面所有的elif判断——哪怕此时玩家已经进入your office房间,第三个elif也没机会执行。

修复方案

调整条件判断的优先级,先检查玩家是否在your office房间,再根据物品收集情况分支,最后处理“收集全物品但还没去office”的提示。

修改后的循环内条件判断部分代码:

while True:
    # sort inventory.
    sorted_inv = sorted(inventory)
    # display instructions.
    instructions()

    # 先判断是否在目标房间
    if current_room == 'your office':
        if sorted_inv == ['blasting rod', 'enchanted duster', 'energy potion', 'shield bracelet', 'skull', 'wizard staff']:
            print('The Faerie Queen has terrorized your city for the last time.')
            break
        else:
            print('You were unprepared. The Queen tears you head off. Game over.')
            break
    # 再判断是否收集全物品(此时不在office)
    elif sorted_inv == ['blasting rod', 'enchanted duster', 'energy potion', 'shield bracelet', 'skull', 'wizard staff']:
        print('\nYou\'ve got your stuff back. Time to see the Queen.')
额外优化建议
  • 把目标物品列表存成一个变量,比如required_items = sorted(['blasting rod', 'enchanted duster', 'energy potion', 'shield bracelet', 'skull', 'wizard staff']),之后直接用sorted_inv == required_items,避免重复写长列表,也不容易出错。
  • 检查your office房间的物品Faerie Queen是否需要加入收集列表?目前你的胜利条件里没包含它,要是这是最终关键物品,记得调整required_items。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:50:33