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

