Python代码运行报错ValueError: not enough values to unpack (expected 2, got 1)求助
报错原因
- 错误触发在
(a, b) = map(int, input().split(' '))代码行,代码要求将分割后的结果解包给2个变量,但实际分割得到的列表长度不为2。 - 常见触发场景有两类:
- 某一行输入仅包含1个数字,分割后列表长度为1
- 输入行首尾带空格、两个数字之间有连续多个空格,
split(' ')会将单个空格作为独立分割依据,生成多余的空字符串元素,比如输入3 4用split(' ')分割会得到['', '3', '', '4', ''],列表长度不符合要求。
修复方案
最优方案:使用无参数split处理输入
无参数的split()方法会自动识别任意数量的空白字符(空格、制表符、换行符),同时自动忽略字符串首尾的空白,不会生成多余的空字符串元素,完全适配常规的数值输入场景。
修改后的代码如下:
T = int(input()) for tc in range(T): # 读取两个整数a和b a, b = map(int, input().split()) ans = a + b print(ans)
兼容异常输入方案
如果需要适配输入不规范的场景,可以增加输入校验逻辑,避免程序直接崩溃:
T = int(input()) for tc in range(T): input_list = list(map(int, input().split())) # 取前两个有效数字计算 a, b = input_list[0], input_list[1] ans = a + b print(ans)
内容的提问来源于stack exchange,提问作者Shlok Kamath
相关产品推荐
相关产品推荐

