Python求和程序报错ValueError:无法将'finish'转为十进制整数
问题排查与解决方案
错误原因
你这段代码的核心问题有两个:
- 你先把输入强制转换为整数,当输入
finish这个字符串时,int()函数无法将非数字字符串转为整数,直接触发ValueError; - 就算转换成功,
num是整数类型,永远不可能和字符串finish相等,终止逻辑完全失效。
修正后的代码
total = 0 while True: user_input = input('Please enter the number you want: ') # 先判断是否为终止指令 if user_input == 'finish': print(f"Total sum: {total}") break # 尝试转换输入为整数并累加 try: num = int(user_input) total += num except ValueError: print("Invalid input! Please enter a number or 'finish' to exit.")
关键改进点
- 先获取原始输入字符串,优先判断终止指令,避免提前转换导致的错误;
- 用
try-except捕获转换异常,处理用户输入非数字也非finish的无效情况,让程序更健壮; - 使用
total += num简化累加写法,代码更简洁。
内容的提问来源于stack exchange,提问作者ali reza
相关产品推荐
相关产品推荐

