输入:
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???
答案 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 in
从fileinput
读取所有内容来调整您的代码,并在“输入”时离开压:
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)