【问题标题】:Why and how multiple lines input works in Python为什么以及如何在 Python 中进行多行输入
【发布时间】:2018-09-26 19:01:12
【问题描述】:

在你报告我重复之前,让我链接类似的主题,这些主题说明如何编写代码,但不要说明它是如何工作的:

现在读取多行的代码:

'''
input data:
line 1
line 2
line 3
'''

line_holder = []

while True:
    line = input("\nPlease paste here lines :\n")
    if line:
        line_holder.append(line)
    else:
        break
for line in line_holder:
    print(line)

我是怎么理解的:

  • 循环将重复直到“break”语句
  • 在输入中,我们粘贴了存储在某种队列中的多行
  • 如果输入队列中有任何东西可以使用
  • 将此队列中的第一个值添加到列表中
  • 如果什么都没有,用“break”终止循环
  • 最后,打印我们从队列输入添加到列表中的内容

因此,如果有输入队列,我还能如何访问它?它是如何存储在计算机上的,为什么我需要构建列表才能看到它?

【问题讨论】:

  • 循环将重复直到行是Falsy 然后它会摆脱它。对于字符串 Falsy 意味着它是空的。你不需要粘贴任何东西,你也可以在控制台中输入一些东西。您的代码中没有“输入队列”。您将它存储在一个列表中,因为 python 中的字符串是不可变的,并且“添加”到字符串中,总是会创建一个新字符串。最好将它们存储在列表中。如果您需要包括 \n 在内的整个字符串,则可以使用text = '\n'.join(your_list)

标签: python python-3.x input multiple-input


【解决方案1】:

So if there is a queue of inputs, how else can I reach it?
正如所写,您的循环不会访问队列 - inputstdin 获取 input ...通常是用户从键盘输入的数据。

How is it stored on the computer ...?
假设您指的是不存在的队列(见上文),但是当您将 line 附加到列表时,您该行存储在列表中。

... and why do I need to build list, to see it?
你不知道 - 你可以打印该行以查看它,但如果你想稍后使用该数据,你必须将它放在某种容器中,list 很方便。

【讨论】:

  • How is it stored on the computer and why do I need to build list, to see it? 我不需要。在您提供有关 stdin 的提示后,我找到了如何直接从那里阅读的主题,而无需构建列表。 How do you read from stdin in Python? How is it stored on the computer ...? "sys.stdin 是一个类似文件的对象,如果您想读取所有内容,或者您​​想读取所有内容并自动用换行符分割,您可以在其上调用函数 read 或 readlines。"
【解决方案2】:

这是所有内容的概要 第一行(从 line_holder = [] 开始)将 line_holder 声明为一个数组,以供需要添加行时使用。

然后 while True 使它成为一个无限循环(除非在循环内另有指示)

循环内部是一个输入,分配给变量'line'

然后它检查 line 中是否有任何内容(如果 line),如果有,它将 'line' 的内容添加到已经声明为 line_holder 的数组中。

但是,如果 line(else) 中没有任何内容,则它会中断循环,然后开始一个 for 循环,即 line_holder 中的 for line,它将第一行、第二行等分配给变量 line,然后打印它,直到 line_holder 里面没有任何位置。

希望这能为您解决问题,如有任何问题,请添加评论。

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多