当输入量未知时,Python 3中读取多行用户输入的最佳方法是什么?多行输入将由Enter
分隔当我尝试使用
时while True:
line = input()
if line:
print(line)
else:
break
我收到了EOFError
然后,如果我将其更改为try-catch块
while True:
line = input()
try:
print(line)
except EOFError:
break
我仍然得到了EOFError。
答案 0 :(得分:4)
当您致电EOFError
时,会发生 input()
,而不是在您进行测试时,也不会在您打印时发生。这意味着您应该将input()
放入try
条款:
try:
line = input()
print(line)
except EOFError:
break
话虽如此,如果input
从标准输入通道读取,您可以将其用作可迭代:
import sys
for line in sys.stdin:
print(line, end='')
由于现在每个line
都以新的字符'\n'
结尾,我们可以在end=''
函数中使用print
,以防止两次打印新行(一次来自字符串,一次来自print
函数。)
我认为最后一个版本更优雅,因为它几乎在语法上表示你遍历stdin
并单独处理这些行。
答案 1 :(得分:0)
如果输入为空,则中断循环,
a = []
while True:
user_input = input()
if user_input == '':
break
else:
a.append(int(user_input))
print(sum(a))
产生,
3
3
[Program finished]
如果你知道范围,
x, *z= [int(input()) for _ in range(3)]
print(x + sum(z))
产生,
3
4
5
12
[Program finished]