python 打印(foo,end="”)在终端中不起作用[重复]

ulydmbyx  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(131)
    • 此问题在此处已有答案**:

Why doesn't print output show up immediately in the terminal when there is no newline at the end?(1个答案)
Why print in Python doesn't pause when using sleep in a loop?(2个答案)
13小时前关门了。
这是一些用来打印文本的代码,类似于口袋妖怪,纯粹是为了好玩。
问题是当程序在终端中运行时print(x, end="")不工作,但是当使用IDLE运行时它工作正常。

import time

lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."

for x in lorem:
    print(x, end="")
    time.sleep(0.03)

由于某种原因,如果我在print(x, end="")之前放一个print语句,程序就能正常工作。

for x in lorem:
    print()
    print(x, end="")
    time.sleep(0.03)

有人知道是什么原因吗?或者怎么解决?

hpxqektj

hpxqektj1#

之所以会发生这种情况,是因为Python使用缓冲区来写入Stdout。为了获得所需的效果,必须在代码末尾放置sys.stdout.flush() ......

import time, sys

lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."

for x in lorem:
    print(x, end="")
    time.sleep(0.03)
    sys.stdout.flush()

这将以每0.03秒1个字符的速率单独打印出每个字符

相关问题