print(foo, end="") 在终端中不起作用

Dan*_*iel 5 python printing

所以这是一些应该打印文本的代码,类似于 Pokemon 的工作方式。纯粹是为了好玩。

问题是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)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果我在print(x, end="").

for x in lorem:
    print()
    print(x, end="")
    time.sleep(0.03)
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么原因造成的?也许如何解决它?

小智 12

发生这种情况是因为 python 使用缓冲区写入标准输出。为了获得预期的效果,您必须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()
Run Code Online (Sandbox Code Playgroud)

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

  • 或者,`print(x, end="",flush=True)`。(仅限 python 3.3+) (8认同)

归档时间:

查看次数:

1870 次

最近记录:

6 年,2 月 前