提问人:Riemann 提问时间:7/30/2023 最后编辑:Riemann 更新时间:7/30/2023 访问量:43
过早输入会导致故障吗?
Can giving input too early cause glitches?
问:
假设我的 Python 代码如下所示:
While(True):
Var = input()
Do something
我注意到,当我从 Windows 提示符运行它时,我可以在仍在运行时提供输入。例如:Do something
- 如果我在 期间按回车键,那么下次询问该输入时,会自动分配空输入。
Do something
Var
- 如果我在 期间按其他内容(如 ),那么下次询问输入时,我会在提示中看到这一点。所以它说,我仍然可以选择删除它,向它添加一些东西或按回车键。
1
Do something
1
- 如果也可以使这些组合。如果我在 期间按 、 、 ,那么接下来的两个循环将自动以 开始。
1
enter
1
enter
Do something
Var = 1
这似乎有点奇怪,而且可能是无意的。如果我在期间提供某些输入,算法是否有可能表现不同/奇怪/未定义?Do something
(请注意,使用Do something
Var
)
答:
2赞
alexis
7/30/2023
#1
这绝对是有意为之的。它不是特定于 Python 的,而是终端输入的工作方式:无论您输入什么,都会进入缓冲区,并保留在那里,直到正在运行的程序选择读取它。然后它将严格按顺序读取 - 只要您在命令行键入,您的某些输入就不会被无序读取。而且输入缓冲区非常大,因此在输入丢失或被拒绝之前,您必须进行大量预输入。
实际上,在多个地方都有缓冲区。在按 Enter 键之前,您键入的内容甚至不会传递到您的程序中——这是终端界面的行缓冲。但我相信这已经回答了你的问题。
评论