Python自定义函数无法将输入字符串转为整数,请求协助排查
问题排查与修复
你的代码核心问题是**validate_credits函数完成整数转换后,没有返回转换后的整数值**。函数内部只是把局部变量input_credits转成了整数,但这个变量不会自动同步到外部,导致你后续的mark1/mark2/mark3依然是用户输入的原始字符串,根本没拿到转换后的结果。
另外,裸except语句会捕获所有异常(比如KeyboardInterrupt这类),建议明确捕获ValueError,避免误处理其他意外情况。
修复后的代码
score = [0,20,40,60,80,100,120] def validate_credits(input_credits): try: # 转换为整数后返回,让外部能拿到转换结果 converted = int(input_credits) except ValueError: raise ValueError('integer required') if converted not in score: raise ValueError('out of range') return converted while True: try: mark1 = validate_credits(input('Enter your total PASS marks: ')) mark2 = validate_credits(input('Enter your total DEFER marks: ')) mark3 = validate_credits(input('Enter your total FAIL marks: ')) # 可添加后续逻辑,比如验证转换结果类型 print(f"转换后结果(整数类型):PASS={mark1}, DEFER={mark2}, FAIL={mark3}") break # 测试时可加break退出循环,正式场景按需调整 except ValueError as e: print(e)
关键修改点
- 给
validate_credits函数添加返回值:转换完成后通过return converted把整数结果传递给调用者。 - 调用函数时直接将
input()的输入传入,并把返回值赋值给mark1等变量,确保这些变量存储的是整数类型。 - 将裸
except改为except ValueError,只捕获整数转换失败的异常,避免处理无关异常导致的逻辑混乱。
内容的提问来源于stack exchange,提问作者ruki nish
相关产品推荐
相关产品推荐

