我要解决的问题是输入两个数字并输出总和直到用户完成操作。(直到用户输入ctrl + d为止)当然,我可以使用sys.stdin解决问题,但我想解决它使用一会儿。 下面的两个代码是我的代码,第一个很好用,但是第二个不好用。我不知道两个代码之间的区别。如果有人知道原因,请解释原因。
<div>
答案 0 :(得分:2)
readline()
在EOF时不会失败;它只是返回一个空字符串。分割一个空字符串是可以的。在空白列表上map
ping int
很好。对一个空的Iter进行求和就可以了(结果为零)。
在第一个版本中,是{em> a, b
的解压缩失败,但是当您丢弃所有异常信息并捕获种类过多的异常时,无法分辨出区别同时。
请勿使用except
;使用except Exception
避免捕获低级流控制异常。而且,如果您认为需要捕获一个异常,否则将忽略该异常,请考虑记录捕获到的事实以用于调试。
如果您想使用sys.stdin
,则for循环会更好(line
将继续以\n
结尾):
for line in stdin:
print(sum(map(int, line.split())))
如果要使用while循环,最好使用input
:
while True:
try:
line = input()
except EOFError:
break
print(sum(map(int, line.split())))