Python两数求和代码运行触发Traceback报错的原因求解
报错原因分析
- 输入格式不匹配:这是最可能的诱因。绝大多数竞赛编程平台的多整数测试用例,默认会将两个整数放在同一行用空格分隔,你当前代码两次调用
input()每次读取一整行,第一次读取到的内容是类似"3 5"的带空格字符串,无法直接转换为整数,直接触发报错。 - 输入长度不足:若平台测试用例未提供足够的输入行数,
input()无法读取到有效内容时也会触发该类报错。 - 输入包含非法字符:若输入内容存在数字、正负号之外的其他字符,
int()转换会失败,该情况在正规竞赛题中出现概率极低,可优先排查前两种问题。
修复方案
适配同行空格分隔输入(最常用)
a, b = map(int, input().split()) print(a + b)
该写法会自动将读取到的一行内容按空格拆分后转换为整数,适配绝大多数竞赛题的两数输入场景。
通用适配方案(兼容换行、空格等任意分隔格式)
如果不确定平台的输入分隔规则,可直接读取全部输入流后拆分处理:
import sys nums = list(map(int, sys.stdin.read().split())) print(nums[0] + nums[1])
其他注意事项
不要使用sum作为变量名,sum是Python内置的求和函数,覆盖后后续若要调用内置sum功能会出现异常,本次报错虽不是该原因,但属于代码规范问题建议调整。
内容的提问来源于stack exchange,提问作者somebody
相关产品推荐
相关产品推荐

