在python中从多行读取多个输入

时间:2017-02-27 08:12:46

标签: python python-3.x stdin

输入:
691 41
947 779

输出:
1300
336

我尝试过这个解决方案a link

但我的问题是最后一行的结尾未知

我的代码:

for line in iter(input,"\n"):                                                               
    a,b = line.split()
    a = int(a)
    b = int(b)
    result = 2 * (a - b)
    print(result)



My code is printing the desired output but the for loop is not terminating. I am new bee to python is there any way to find last input from stdin console???

4 个答案:

答案 0 :(得分:1)

函数输入正在剥离尾随\ n,所以只需在函数iter中使用空字符串作为分隔符。

答案 1 :(得分:1)

你缺少的是input()从它返回的字符串的末尾剥离换行符,这样当你<RET>单独点击iter()看到的那一行时(即"\n" ,它最终终止循环的测试不是""而是空字符串In [7]: for line in iter(input, ""): ...: print(line) ...: asde asde In [8]: (NB绝对没有空格在双引号之间)。

在这里,我剪切并粘贴一个示例会话,向您展示如何定义正确的sentinel字符串(空字符串)

<RET>

如您所见,当我在n输入行上单独按$http时,循环终止。

ps:我看到gcx11发布了an equivalent answer(我已经投票)。我希望我的回答能够增加一些背景,并展示它是如何得到正确答案的。

答案 2 :(得分:0)

你提到你试过this 但似乎您将'\n'实现为sentinel(使用链接中的帖子中的术语)。

您可能需要尝试实际使用停用词,如下所示:

stopword = 'stop'
for line in iter(input, stopword):                                                               
    a,b = line.split()
    a = int(a)
    b = int(b)
    result = 2 * (a - b)
    print(result)

答案 3 :(得分:0)

可能不是您需要的,但我没有弄清楚您的输入来自何处,我尝试通过使用std infileinput读取所有内容来调整您的代码,并在“输入”时离开压:

import fileinput

for line in fileinput.input():
    if line == '\n':
        break
    a, b = line.split()
    a = int(a)
    b = int(b)
    result = 2 * (a - b)
    print(result)