Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从多行读取多个输入_Python_Python 3.x_Stdin - Fatal编程技术网

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

在python中从多行读取多个输入,python,python-3.x,stdin,Python,Python 3.x,Stdin,输入: 69141 947779 输出: 1300 336 我尝试过这个解决方案 但我的问题是最后一行的结尾未知 我的代码: for line in iter(input,"\n"): a,b = line.split() a = int(a) b = int(b) result = 2 * (a - b) print(result

输入:
69141
947779

输出:
1300
336

我尝试过这个解决方案

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

我的代码:

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???

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

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

您提到您尝试过 但是您似乎实现了一个
'\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)

你提到你试过了 但是您似乎实现了一个
'\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)

可能不是您需要的,但我不知道您的输入来自何处,我尝试通过使用
fileinput
读取
std中的所有内容来调整您的代码,并在按下“Enter”时离开:

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)

可能不是您需要的,但我不知道您的输入来自何处,我尝试通过使用
fileinput
读取
std中的所有内容来调整您的代码,并在按下“Enter”时离开:

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()
将换行符从它返回的字符串的末尾剥离出来,这样当您单独在一行中点击
时,
iter()
看到的(即它测试的最终终止循环的内容)不是
“\n”
,而是空字符串
(注意,双引号之间绝对没有空格)

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

如您所见,当我在n输入线上单独按下
时,循环终止


ps:我已经看到了这个帖子(我投了更高的票)。我希望我的答案能增加一点上下文,并显示出它是如何有效地给出正确的答案。

你缺少的是
input()
将换行符从字符串的末尾剥离出来,这样当你单独在一行中点击
时,什么
iter()
看到的(即,它测试最终终止循环的内容)不是
“\n”
,而是空字符串
(注意,双引号之间肯定没有空格)

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

如您所见,当我在n输入线上单独按下
时,循环终止


ps:我已经看到了这个帖子(我已经投了更高的票)。我希望我的答案能增加一点上下文,并显示出它是如何有效地给出正确的答案。

你能解释一下为什么要使用停止作为停止字吗?在我的例子中,我不知道输入何时会终止。你需要以某种方式打破for循环。在这个例子中,“输入”“停止\n”将中断循环。请告诉我可以使用什么作为输入的停止字。您能解释一下为什么使用停止字作为停止字吗?在我的情况下,我不知道输入何时会终止。您需要以某种方式中断for循环。在本例中,“输入”为“停止\n”将中断循环。请告诉我可以使用什么作为输入的停止字。我尝试过使用空字符串作为分隔符,但在这种情况下,for循环也没有终止。我尝试过使用空字符串作为分隔符,但在这种情况下for循环也没有终止。我不知道内置函数
输入
。如果您使用它,我的sricpt会工作t在python
控制台
之外输入
。如果您在python
控制台
之外使用,我的sricpt就可以工作,否则@gboffi answers可能就是您要找的。