为什么除了python try中几乎相同的代码外,它的工作方式还是不同?

时间:2019-11-08 15:07:04

标签: python

我要解决的问题是输入两个数字并输出总和直到用户完成操作。(直到用户输入ctrl + d为止)当然,我可以使用sys.stdin解决问题,但我想解决它使用一会儿。 下面的两个代码是我的代码,第一个很好用,但是第二个不好用。我不知道两个代码之间的区别。如果有人知道原因,请解释原因。

<div>

1 个答案:

答案 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())))