为了账号安全,请及时绑定邮箱和手机立即绑定

如何从用户那里获取多行输入

如何从用户那里获取多行输入

牧羊人nacy 2019-11-19 09:58:17
我想编写一个程序,获取多个行输入并逐行处理它。为什么没有像raw_inputPython 3 那样的函数?input不允许用户将换行符(Enter)分隔开,而是仅打印第一行。可以将其存储在变量中,甚至可以将其读取到列表中吗?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

在Python 3.x中raw_input(),Python 2.x的input()功能已被替换。但是,在两种情况下,您都无法输入多行字符串,为此,您需要从用户行中逐行获取输入,然后.join()使用来输入它们\n,或者您也可以采用多种行并使用+由运算符分隔的行将它们连接起来\n


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


no_of_lines = 5

lines = ""

for i in xrange(5):

    lines+=input()+"\n"


print lines

要么


lines = []

while True:

    line = input()

    if line:

        lines.append(line)

    else:

        break

text = '\n'.join(lines)


查看完整回答
反对 回复 2019-11-19
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

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)


查看完整回答
反对 回复 2019-11-19
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

input(prompt) 基本上相当于


def input(prompt):

    print(prompt, end='', file=sys.stderr)

    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)来指示结束。在从文件或从终端/键盘读取了五行之后,最后一行将返回。


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 511 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信