想要在单行 Python 中多次打印 [重复]
Posted
技术标签:
【中文标题】想要在单行 Python 中多次打印 [重复]【英文标题】:Want to print multiple times in single line Python [duplicate] 【发布时间】:2021-07-25 20:57:35 【问题描述】:我想制作一个程序来输出文本,就好像它是实时输入的一样。为此,我正在打印一个单词并等待 0.2 秒,然后再等待其他。
我看过这个网站:https://www.tutorialspoint.com/how-to-print-in-same-line-in-python 但问题是 print() 不断收集要打印的字符,然后在循环结束后刷新它们。所以我无法得到我想要的结果。
这是代码:
import time
time.sleep(2)
welcome = "Welcome. We will plot a graph in this program"
for i in range(len(welcome)):
time.sleep(0.2)
print(welcome[i], end="")
请帮助我。 谢谢。
【问题讨论】:
这能回答你的问题吗? I can't simulate slow printing, always ends in error 很奇怪,我只是尝试了我用来回答这个问题的例子,但它不再起作用了。它以前肯定有效,否则我不会回答这个问题。我不确定发生了什么。 关于我自己的评论;我想我在较旧的 python 安装中测试了上面的示例。flush=True
解决了这个问题。
【参考方案1】:
在 python 3 中你可以使用flush=True
:
for character in welcome:
print(character, end="", flush=True)
time.sleep(0.2)
我通过将for i in range(len(welcome))
替换为for word in welcome
使代码更清晰,因此您只需打印character
。
【讨论】:
更喜欢这个答案。 让它更“栩栩如生”import random
然后time.sleep(random.uniform(0.05, 0.5))
【参考方案2】:
您需要刷新标准输出,因为您没有在字符串末尾使用 '\n'。
import sys
import numpy
import pandas
import matplotlib.pyplot as pl
import time
time.sleep(2)
welcome = "Welcome. We will plot a graph in this program"
for i in range(len(welcome)):
time.sleep(0.2)
print(welcome[i], end="")
sys.stdout.flush()
更好的解释here.
另一个:Usage of sys.stdout.flush() method
【讨论】:
感谢您解决问题并提供必要的解释。 我有另一种方法来刷新它:***.com/questions/230751/… 它更简单,不需要 sys 模块以上是关于想要在单行 Python 中多次打印 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python:使用jsonpickle无法两次或多次打印同一个对象。