windows 过早输入会导致故障吗?

vs3odd8k  于 2023-08-07  发布在  Windows
关注(0)|答案(1)|浏览(124)

假设我的Python代码看起来像这样:

While(True):
    Var = input()
    Do something

字符串
我注意到,当我从Windows提示符运行时,我可以在Do something仍在运行时给予输入。举例来说:
1.如果我在Do something期间按回车键,那么下次询问该输入时,Var将自动分配空输入。
1.如果我在Do something期间按下其他东西(如1),那么下次输入时,我会在提示符中看到这一点。所以它写的是1,我仍然可以选择删除它,添加一些东西或按回车键。
1.如果也可以使这些组合。如果我在Do something期间按1enter1enter,那么接下来的两个循环将自动从Var = 1开始。
这似乎有点奇怪,而且可能是无意的。如果我在Do something期间给予某些输入,算法是否可能表现不同/奇怪/未定义?
(Note Do something使用Var的值)

q3qa4bjr

q3qa4bjr1#

这绝对是有意为之。这不是Python特有的,而是终端输入的工作方式:你输入的任何内容都会进入一个 * 缓冲区 *,并被保存在那里,直到运行中的程序选择读取它。然后,它将按照严格的顺序被读取--只要您在命令行中键入,就不可能不按顺序读取您的某些输入。而且输入缓冲区相当大,所以在输入丢失或被拒绝之前,您必须进行大量的提前键入。
实际上,在多个地方都有缓冲区。在您按Enter键之前,您键入的内容甚至不会传递到您的程序中--这是在终端接口处的行缓冲。但我相信这已经回答了你的问题。

相关问题