在循环中使用 print 的结束参数时出现奇怪的问题

Strange problem while using print's end argument in a loop

提问人:тнαт ҩυιεт кιᴅ ϟ 提问时间:10/22/2023 更新时间:10/22/2023 访问量:21

问:

> python version 3.11.6
> os: Windows
> Idle: Visual studio code (Latest version)

我的代码如下所示:

from time import sleep


x = [
"H",
"E",
"L",
"L",
"O"
]
for i in x:
    print(i, end="")
    sleep(.5)

当我运行这个预期输出时: H 等待 E 等待 L 等待 L 等待 O

但输出是:等待很久,然后立即所有字符。

但是为什么?

我注意到当我不使用结束参数代码时效果很好。

“”附加信息“”: 也尝试使用同样的问题。sys.stdout.write()

python-3.x 循环

评论


答:

2赞 MD Kawsar 10/22/2023 #1

在 print 函数中使用参数时,它会禁止显示通常在每个 print 语句末尾添加的换行符 ()。end=""\nprint

您可以在函数中使用参数来解决此问题:flush=Trueprint

from time import sleep

x = [
    "H",
    "E",
    "L",
    "L",
    "O"
]

for i in x:
    print(i, end="", flush=True)
    sleep(.5)

作为替代方案,您可以通过组合和 to to 获得相同的结果:sys.stdout.write()sys.stdout.flush()

import sys
from time import sleep

x = [
    "H",
    "E",
    "L",
    "L",
    "O"
]

for i in x:
    sys.stdout.write(i)
    sys.stdout.flush()  # Flush the output buffer
    sleep(.5)

评论

0赞 тнαт ҩυιεт кιᴅ ϟ 10/22/2023
您能否澄清一下为什么当我们使用 flush=True 时不会出现问题?还有为什么当 end=“”