如何避免Python在需输入int类型却输入其他数据类型时崩溃?
解决Python输入非整数导致程序崩溃的问题
当用户输入无法转换为整数的内容时,int(input())会抛出ValueError导致程序崩溃。解决这个问题的核心是捕获异常并做输入验证,同时修正原代码中的逻辑错误,以下是完整的解决方案:
修正后的代码
def summer(num): summed = 0 # 遍历数字的每一位,跳过负号(如果输入负数) for digit in str(num): if digit.isdigit(): summed += int(digit) print(summed) # 判断是否为5位数字 if len(str(num)) != 5: print("请输入一个5位数字") else: print(*str(num), sep=", ") # 循环获取有效整数输入 while True: try: num = int(input("Number: ")) # 可选:限制输入为正的5位整数(避免负数或不足5位的情况) if not (10000 <= num <= 99999): print("请输入一个有效的5位正整数") continue break except ValueError: print("输入无效,请输入整数") summer(num)
关键修复点
- 异常捕获:用
try-except块捕获ValueError,当输入无法转为整数时,提示用户重新输入,通过while True循环确保直到获得有效输入才继续。 - 函数优化:将
num作为参数传入summer函数,避免依赖全局变量,让函数逻辑更独立。 - 删除无效判断:原代码中的
if num != int是错误的(拿变量和类型比较),直接删除。 - 兼容负数(可选):遍历数字字符时跳过非数字的负号,避免转换出错;也可以直接限制输入为5位正整数,让逻辑更严谨。
内容的提问来源于stack exchange,提问作者Yair A.
相关产品推荐
相关产品推荐

