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

练习的题目是输入多行数据,每行数据的格式为‘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.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务