【问题标题】:Python unexpectedly stopping while loop after getting input multiple times and printing the inputPython 在多次获取输入并打印输入后意外停止 while 循环
【发布时间】:2020-09-08 09:30:29
【问题描述】:

好的,当我遇到这个问题时,我是第一次尝试 Google Kick Start 问题。出于某种原因,当我同时输入多行输入然后在处理每个输入之间打印时,它会使循环永远运行,直到我输入新的输入。这种情况有简单的解释吗?

x = int(input())
print('\nx =', x)
for i in range(x):
    newInput = input()
    print(newInput)

如果我输入如下:

3
1
2
3

那么输出是:

x = 3
1
2

然后我必须再次按“输入”才能看到

3

为什么程序需要第二个输入来打印剩余的3? 奇怪的是,当我在 IDE 上使用带有断点的调试器模式时,这个问题就消失了(不再需要再次按“enter”)。

【问题讨论】:

    标签: python


    【解决方案1】:

    当您调用input() 时,Python 会等待换行符。如果您复制粘贴最后没有换行符的输入数据,则它不知道最后一行是完整的,但该行之前的行以换行符结尾,所以它会这样做。确保您复制粘贴的内容末尾包含换行符。

    【讨论】:

    • 我尝试了print(newInput + '\n')print(newInput, '\n'),但都没有成功。
    • print 与此无关,它是您向程序提供输入的方式。例如,如果我只是从问题中复制您的示例输入3 1 2 3,它不会以换行符结尾,它实际上是"3\n1\n2\n3"。我需要将它粘贴到一个文件中,在末尾添加一个换行符,然后复制整个内容。
    • 我知道它必须是我所缺少的非常简单的东西。在我输入的最后 3 行之后添加另一行是有效的。谢谢
    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2012-05-01
    相关资源
    最近更新 更多