Python输入调用函数异常求助:选择选项后进程终止问题排查
问题分析与解决
你的代码有几个关键问题导致程序没执行预期函数就终止了,我来一步步帮你理清:
1. 输入类型不匹配(最直接原因)
input()获取的用户输入是字符串类型,但你判断时用的是整数1/2/3,比如the_route == 1——字符串和整数永远不会相等,所以所有if/elif分支都不会触发,程序自然直接结束。
2. 类的使用方式错误
你把用户交互和函数调用逻辑直接写在类的顶层,这部分代码会在Python加载这个类时立刻执行,而非等你创建类实例的时候。更糟的是,此时first()和second()函数还没定义(它们在类的后面),就算类型匹配了,也会直接抛出NameError。
修正后的代码示例
我帮你调整了逻辑,去掉了不必要的类,把交互逻辑封装到函数里,同时处理了类型转换和异常情况:
def first(): print("First function") def second(): print("Second function") def main(): while True: the_route = input("Which function do you want to use? \n\n 1) The first one. \n\n 2) The second one. \n\n 3) The first one and then the second one. \n\n Please enter the corresponding number and hit enter >>>> ") # 尝试转换输入为整数,处理非法输入 try: choice = int(the_route) if choice == 1: first() break elif choice == 2: second() break elif choice == 3: first() second() break else: print("请输入1、2、3中的一个数字!") except ValueError: print("输入无效,请输入数字!") if __name__ == "__main__": main()
关键改进点
- 把交互逻辑放到
main()函数里,通过if __name__ == "__main__"确保只有直接运行脚本时才执行交互 - 用
int()把用户输入的字符串转换成整数,同时用try-except处理用户输入非数字的情况 - 添加循环,直到用户输入有效选项才退出
- 把函数定义放在前面,避免调用时出现未定义的错误
这样修改后,你输入1/2/3就能正常触发对应的函数执行啦~
内容的提问来源于stack exchange,提问作者Maverick
相关产品推荐
相关产品推荐

