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

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

相关推荐

BG 双2硕,科班,C++选手上周面试结果以及后续:字节二面挂 -- 3.27一面(秒过,十分钟约二面) 3.28 二面(手撕不会) 3.31 感谢信。腾讯天美排序挂 -- 3.25一面(秒过,半小时约二面)3.27二面(聊的还行) 4.1 感谢信,后来了解到这个组一共两轮技术面,技术面之后排序卡了好几天,周一下午打电话催了一下没反应,周二早上发邮件又催了一下,邮件反馈说面试官还在排序,周二晚上收到感谢信。网易互娱一面过 -- 3.26 一面, 4.3 约二面, 隔了好久好久才约,投的是候岗位选错了,约二面的时候从客户端改成服务端了。拼多多一面过 -- 3.29 一面, 4.1 二面, 目前泡着,没后续。灵犀一面过 -- 3.26一面, 4.1 二面(半小时多一点就结束了,以为KPI), 4.3 三面(HR), 4.3 OC。本周新开启:快手:4.2 一面(半小时约二面)约面未面:网易互娱: 4.8 二面快手:4.8 二面总结:1. 没有垂直领域的实习,不容易被某个类型的部门捞;2. 手撕有点弱,没见过的题目类型容易懵逼;PS:1. 美团、百度这些都没捞我啊,难道是投的岗位太难了吗;2. 米哈游笔试2.9/3,部门筛选了很久,还是把我挂了,心碎;
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务