Python int转换报ValueError: invalid literal for int()空值报错如何修复
问题修复方案
错误原因
- 触发
ValueError: invalid literal for int() with base 10: ''报错的直接原因是:执行input()读取输入时,你没有输入任何内容直接按了回车,程序拿到的空字符串''无法转换为int类型。 - 除此之外原有代码还存在逻辑错误:
greatest函数的第一个判断条件写为num1 >= num2 and num1 >= num2,重复对比了num1和num2的大小,没有和num3对比,会出现num3比num1大时判断结果错误的问题。
修复后完整代码
def greatest(num1, num2, num3): # 修正逻辑错误,补充和num3的对比 if num1 >= num2 and num1 >= num3: print("num1 is greatest") elif num2 >= num1 and num2 >= num3: print("num2 is greatest") else: print("num3 is greatest") def get_valid_int(prompt): # 新增输入校验逻辑,避免空输入或非整数输入导致崩溃 while True: input_content = input(prompt).strip() if not input_content: print("输入不能为空,请输入有效整数") continue try: return int(input_content) except ValueError: print("输入不是合法整数,请重新输入") int1 = get_valid_int("enter a number1: ") int2 = get_valid_int("enter a number2: ") int3 = get_valid_int("enter a number3: ") greatest(int1, int2, int3)
修复说明
- 新增的
get_valid_int函数会循环读取用户输入,自动过滤空值、非整数输入,直到用户输入合法内容才会继续执行后续逻辑,避免程序直接崩溃。 - 修正了
greatest函数的判断逻辑,确保三个数字的大小对比完整,输出结果正确。 - 临时测试场景下如果不想修改代码,运行程序后在输入提示弹出时直接输入整数再按回车,不要留空也不要输入非数字内容,也可以正常运行。
内容的提问来源于stack exchange,提问作者Aryan Agarwal
相关产品推荐
相关产品推荐

