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

练习的题目是输入多行数据,每行数据的格式为‘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 广西

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务