【问题标题】:print() functions executes only after for loop is finished in python 3 [duplicate]print()函数仅在python 3中的for循环完成后执行[重复]
【发布时间】:2017-09-08 11:48:24
【问题描述】:

我想使用 for 循环在同一行显示一个序列号,这就是我所做的:

for i in range(10):
    sleep(1)
    print(i, end=" ")

这应该在 for 循环的每次迭代中一个接一个地打印数字 (0, 1, 2, ..., 10),而不是程序等到循环完成,然后在一次。

我不明白为什么会这样,有没有人知道是什么导致了这种行为,谢谢?

【问题讨论】:

    标签: python-3.x loops printing


    【解决方案1】:

    您的stdout 是行缓冲的;这意味着在遇到换行符之前它不会显示文本。您需要显式刷新缓冲区:

    for i in range(10):
        sleep(1)
        print(i, end=" ", flush=True)
    

    来自print() function documentation

    输出是否缓冲通常由file决定,但如果flush关键字参数为真,则流被强制刷新。

    来自sys.stdout

    交互时,标准流是行缓冲的。

    【讨论】:

    • 感谢这个完美的工作
    猜你喜欢
    • 2018-03-04
    • 2015-06-20
    • 2012-07-01
    • 1970-01-01
    • 2015-12-22
    • 2017-01-02
    • 2015-03-04
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多