如何从用户获得多行输入

我想写一个程序,得到多行输入,并与它一行一行的工作。为什么在 Python 3中没有类似于 raw_input的函数?

input不允许用户放置由换行符分隔的行(Enter)。它只打印回第一行。

它可以存储在一个变量中,甚至可以读取到一个列表中吗?

288190 次浏览

在 Python 3.x 中,Python 2.x 的 raw_input()已经被 input()函数所取代。但是在这两种情况下你都不能输入多行字符串,为此你需要逐行从用户那里获得输入,然后使用 \n将它们进行 .join(),或者你也可以使用 +运算符将它们连接起来,用 \n分隔

要从用户那里获得多行输入,你可以这样做:

no_of_lines = 5
lines = ""
for i in xrange(no_of_lines):
lines+=input()+"\n"


print(lines)

或者

lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
text = '\n'.join(lines)

使用 input()内置函数从用户获取输入行。

你可以读 这里的帮手

您可以使用下面的代码一次获得多行(以空行结束) :

while input() != '':
do_thing

input(prompt)基本上等于

def input(prompt):
print(prompt, end='', file=sys.stderr, flush=True)
return sys.stdin.readline()

如果您愿意,您可以直接从 sys.stdin读取。

lines = sys.stdin.readlines()


lines = [line for line in sys.stdin]


five_lines = list(itertools.islice(sys.stdin, 5))
    

前两个要求输入结束以某种方式,或者通过到达文件结束,或者通过用户键入 Control-D (或 Windows 中的 Control-Z)来发出结束的信号。无论是从文件还是从终端/键盘读取五行,最后一行将返回。

no_of_lines = 5
lines = ""
for i in xrange(5):
lines+=input()+"\n"
a=raw_input("if u want to continue (Y/n)")
""
if(a=='y'):
continue
else:
break
print lines

raw_input可以正确处理 EOF,所以我们可以写一个循环,读取直到我们从用户那里收到一个 EOF (Ctrl-D) :

巨蟒3

print("Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it.")
contents = []
while True:
try:
line = input()
except EOFError:
break
contents.append(line)

巨蟒2

print "Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it."
contents = []
while True:
try:
line = raw_input("")
except EOFError:
break
contents.append(line)