输入输出练习我这样写为什么会报错呢?

练习的题目是输入多行数据,每行数据的格式为‘a b',需要输出a+b。如果输入的数据为'0 0'就结束。我写的代码是这样的:
import sys
string = sys.stdin.readline()
while string != '0 0':
        [a,b] = list(map(int,string.split()))
        print(a+b)
        string = sys.stdin.readline()

但是这个时候会报错,位置在
[a,b] = list(map(int,string.split()))
原因是ValueError: not enough values to unpack (expected 2, got 0)。

我把代码改成下面这样又可以通过了,这是为什么呢?
import sys
string = sys.stdin.readline()
while string != '0 0':
        [a,b] = list(map(int,string.split()))
        if a==0 and b==0:
            break
        print(a+b)
        string = sys.stdin.readline()


全部评论
你的第一份代码应该这么写 import sys string = sys.stdin.readline().strip() while string != '0 0&(9818)#39;:         [a,b] = list(map(int,string.split()))         print(a+b)         string = sys.stdin.readline().strip()
1 回复 分享
发布于 2020-09-03 14:10
map是解包的意思,[a,b]输入的是一个列表,正确写法a,b = list(map(int,string.split()))这样就是它expected 2了
点赞 回复 分享
发布于 2024-03-26 12:34 广西
这个错误,是没有足够的变量进行解包 你看下最后 `sys.stdin.readline()`读出来的内容是什么
点赞 回复 分享
发布于 2020-09-03 11:20
这是什么语言...
点赞 回复 分享
发布于 2020-08-30 15:06

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
06-27 15:29
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务