如何从用户那里获取多行输入[重复]
- 2024-12-30 08:42:00
- admin 原创
- 101
问题描述:
我想编写一个程序,获取多行输入并逐行处理。为什么没有像raw_input
Python 3 那样的函数?
input
不允许用户使用换行符 ( Enter
) 分隔行。它仅打印回第一行。
它可以存储在变量中或者甚至读入列表中吗?
解决方案 1:
raw_input
可以正确处理 EOF,因此我们可以编写一个循环,读取直到收到来自用户的 EOF(Ctrl-D):
Python 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)
Python 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)
解决方案 2:
在 Python 3.x 中,raw_input()
Python 2.x 中的 已被函数取代input()
。然而,在这两种情况下,您都无法输入多行字符串,为此,您需要逐行从用户那里获取输入,然后.join()
使用`,或者您也可以获取各行并使用运算符将它们连接起来,
+分隔符为
`
要从用户那里获取多行输入,你可以这样做:
no_of_lines = 5
lines = ""
for i in xrange(no_of_lines):
lines+=input()+"
"
print(lines)
或者
lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
text = '
'.join(lines)
解决方案 3:
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)来表示结束。最后一个将在读取五行后返回,无论是从文件还是从终端/键盘读取。
解决方案 4:
使用input()
内置函数从用户获取输入行。
您可以在此处阅读帮助。
您可以使用以下代码一次获取多行(以空行结束):
while input() != '':
do_thing
解决方案 5:
no_of_lines = 5
lines = ""
for i in xrange(5):
lines+=input()+"
"
a=raw_input("if u want to continue (Y/n)")
""
if(a=='y'):
continue
else:
break
print lines
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD