假设我的Python代码看起来像这样:
While(True):
Var = input()
Do something
字符串
我注意到,当我从Windows提示符运行时,我可以在Do something
仍在运行时给予输入。举例来说:
1.如果我在Do something
期间按回车键,那么下次询问该输入时,Var
将自动分配空输入。
1.如果我在Do something
期间按下其他东西(如1
),那么下次输入时,我会在提示符中看到这一点。所以它写的是1
,我仍然可以选择删除它,添加一些东西或按回车键。
1.如果也可以使这些组合。如果我在Do something
期间按1
、enter
、1
、enter
,那么接下来的两个循环将自动从Var = 1
开始。
这似乎有点奇怪,而且可能是无意的。如果我在Do something
期间给予某些输入,算法是否可能表现不同/奇怪/未定义?
(Note Do something
使用Var
的值)
1条答案
按热度按时间q3qa4bjr1#
这绝对是有意为之。这不是Python特有的,而是终端输入的工作方式:你输入的任何内容都会进入一个 * 缓冲区 *,并被保存在那里,直到运行中的程序选择读取它。然后,它将按照严格的顺序被读取--只要您在命令行中键入,就不可能不按顺序读取您的某些输入。而且输入缓冲区相当大,所以在输入丢失或被拒绝之前,您必须进行大量的提前键入。
实际上,在多个地方都有缓冲区。在您按Enter键之前,您键入的内容甚至不会传递到您的程序中--这是在终端接口处的行缓冲。但我相信这已经回答了你的问题。