Python执行input输入转int时触发ValueError报错原因排查
报错核心信息
运行lst.append(int(input()))语句时抛出如下错误:
ValueError: invalid literal for int() with base 10: ''
错误原因
- 直接触发该值错误的原因:
int()函数无法将空字符串转换为十进制整数。调用input()读取用户输入时,如果用户直接按下回车未输入任何有效字符,input()会返回空字符串'',将这个空字符串传入int()做类型转换时,就会抛出上述错误。 - 你贴出的待排查代码还存在前置逻辑缺陷:循环语句
for n in range(n)中,range()的参数n在循环启动前没有被定义,代码运行到这一行会优先抛出NameError: name 'n' is not defined,根本执行不到后续读取输入的逻辑,说明你实际运行的代码漏写了n的赋值部分。
修复方案
- 提前定义循环次数变量,比如先获取用户需要录入的整数总数量,再启动录入循环。
- 做类型转换前增加输入合法性校验,拦截空输入、非数字类输入,避免转换失败,参考实现代码如下:
lst = [] # 提前赋值循环次数 n = int(input("请输入要录入的整数个数:")) for i in range(n): while True: input_content = input(f"请输入第{i+1}个整数:").strip() # 拦截空输入 if not input_content: print("输入不能为空,请重新输入") continue # 校验整数合法性,兼容负整数场景 valid_check = input_content[1:] if input_content.startswith('-') else input_content if not valid_check.isdigit(): print("输入不是有效整数,请重新输入") continue lst.append(int(input_content)) break print("录入完成,最终列表为:", lst)
内容的提问来源于stack exchange,提问作者Saif Uddin Shrabon
相关产品推荐
相关产品推荐

