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

Read multiple inputs from multiple line in python

输入:
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)

我的代码正在打印所需的输出,但 for 循环没有终止。我是 python 的新蜜蜂,有什么方法可以从 stdin 控制台找到最后的输入吗???

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

你提到你尝试过 this 但是您似乎将 '\n' 实现为 sentinel(使用 link 中 post 中的术语)。

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

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

可能不是您需要的,但我没有弄清楚您的输入来自何处,我尝试通过使用 fileinput 阅读 std in 中的所有内容并在 [= 时离开来调整您的代码15=] 被按下:

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)

你缺少的是 input() strips 字符串末尾的换行符 returns,这样当你单独点击 <RET> iter() 看到的一行(即它测试最终终止循环的内容)不是 "\n" 而是空字符串 "" (注意绝对 没有空格 在双引号之间)。

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

In [7]: for line in iter(input, ""):
   ...:     print(line)
   ...:     
asde
asde


In [8]: 

如您所见,当我在第 n 个输入行上单独按下 <RET> 时,循环终止。

ps:我看到了 gcx11 has posted (我已投赞成票)。我希望我的回答能增加一些背景信息,并说明它是如何有效地成为正确答案的。