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

Python命令交互游戏if/elif分支无法调用外部函数问题

问题根因

分支判断逻辑用错变量:

  • 外层while循环拿到的用户指令存在cmd变量中,用户输入job hut进入对应分支后,cmd的值始终是字符串"job hut"
  • 职业选择的输入结果存在hmhy1r变量中,但后续判断选1/选2的逻辑仍在判断cmd的值,"job hut"既不等于整数1也不等于整数2,两个分支条件永远不会触发,代码执行完直接回到循环开头等待下一次指令输入。

现有代码还存在隐藏报错点:path1()、path2()的定义写在了调用逻辑之后,即使修正变量问题,运行时也会触发名称未定义错误。

修复方案
  • 将分支判断的目标变量从cmd替换为存储选择结果的hmhy1r
  • 将两个路径函数的定义移动到调用逻辑之前,保证调用时函数已经被声明

修正后的参考代码:

from time import sleep

# 提前定义分支函数
def path1():
    print("hi")

def path2():
    print("Working on path 2 taking you to path 1 in 3 seconds")
    sleep(3)
    path1()

# 外层指令主循环
while True:
    cmd = input(">>> ")
    # 其余指令判断分支...
    elif cmd == "job hut":
        print("Manager: How may I help you?")
        print(f"{user}: Can I get a job?")
        print('''
        Manager: I have 2 jobs to offer: 
        Job 1: A Community manager
        Job 2: A Money manager
        ''')
        sleep(1)
        hmhy1r = int(input("Which would you like? Job (1) or Job (2)?: "))
        if hmhy1r == 1:
            path1()
        elif hmhy1r == 2:
            path2()

可选优化:可以给职业选择的输入加合法性校验,避免用户输入非数字内容时int()转换抛出异常中断程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:51:46