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

练习的题目是输入多行数据,每行数据的格式为‘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
这是什么语言...
点赞 回复 分享
发布于 2020-08-30 15:06
这个错误,是没有足够的变量进行解包 你看下最后 `sys.stdin.readline()`读出来的内容是什么
点赞 回复 分享
发布于 2020-09-03 11:20
map是解包的意思,[a,b]输入的是一个列表,正确写法a,b = list(map(int,string.split()))这样就是它expected 2了
点赞 回复 分享
发布于 03-26 12:34 广西

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务