Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';t python打印无限循环上方的语句?_Python_Python 3.x_Printing - Fatal编程技术网

为什么不是';t python打印无限循环上方的语句?

为什么不是';t python打印无限循环上方的语句?,python,python-3.x,printing,Python,Python 3.x,Printing,此代码的输出仅为bb。我想知道为什么没有打印cc,这意味着没有执行第三行,即print(“cc”)。 这是链接- Input=5尝试在此联机编译器中复制您的代码: 正如你所期望的那样 它没有在您的机器上打印cc的原因可能是打印输出的缓冲区存在一些问题或竞争条件。程序在无限循环中变忙,并保留要写入终端/控制台的缓冲区。print默认情况下不会刷新。在这里,您的第一次打印已排队,然后在调用input()时刷新。第二次打印已排队,但从未刷新 如果添加可选的flush参数,将获得预期的行为: prin

此代码的输出仅为
bb
。我想知道为什么没有打印
cc
,这意味着没有执行第三行,即
print(“cc”)
。 这是链接-


Input=5

尝试在此联机编译器中复制您的代码:

正如你所期望的那样


它没有在您的机器上打印
cc
的原因可能是打印输出的缓冲区存在一些问题或竞争条件。程序在无限循环中变忙,并保留要写入终端/控制台的缓冲区。

print
默认情况下不会刷新。在这里,您的第一次打印已排队,然后在调用
input()
时刷新。第二次打印已排队,但从未刷新

如果添加可选的
flush
参数,将获得预期的行为:

print(“bb”,flush=True)
s2=输入()
打印(“抄送”,刷新=真)
当0>-50时:
通过
打印(“qq”,flush=True)#由于无限循环,永远不会发生

代码运行正常:

print("bb")
s2=input()
print("cc")
while 0>-50:
    pass
print("qq")
输出:

bb
my_input
cc

你的帖子肯定需要更多的关注,仅供参考,我无法重现你所说的内容。这是python代码。只执行第一个print语句。打印(“cc”)不是在等待您在第2行输入内容,可能您没有提供第2行预期的输入。我在控制台上尝试了您的代码,在提供输入后,会打印“cc”,这可能是一个缓冲问题,尽管如果输出要发送到终端,那么它应该是行缓冲的,因此您应该在输入字符串后看到
cc
。您可以通过在
print(“cc”)
之后添加
sys.stdout.flush()
来测试它。这是垃圾,不涉及竞争条件。这是标准的输出缓存,除非刷新输出,否则在程序正确结束之前不会显示输出缓冲区。当程序终止时,您希望stdout输出仍然会出现。不知何故,IDEONE的情况并非如此,也许它在杀死停止运行的程序之前就捕获了输出。
bb
my_input
cc