Python 如何在一行上一次打印一个单词?
我想写一段代码,让我把一个单词打印出来,然后它消失,下一个单词打印出来。例如,如果我有“Hello World!”,程序应该打印“Hello”,然后单词消失,然后打印“World!”然后消失。我应该能够改变印刷字的速度以及。目前,我能够想出如何以一定的速度打印字符,但如何一个一个地打印单词呢Python 如何在一行上一次打印一个单词?,python,time,sys,Python,Time,Sys,我想写一段代码,让我把一个单词打印出来,然后它消失,下一个单词打印出来。例如,如果我有“Hello World!”,程序应该打印“Hello”,然后单词消失,然后打印“World!”然后消失。我应该能够改变印刷字的速度以及。目前,我能够想出如何以一定的速度打印字符,但如何一个一个地打印单词呢 import time import sys def print_char(s): for c in s: sys.stdout.write( '%s' % c )
import time
import sys
def print_char(s):
for c in s:
sys.stdout.write( '%s' % c )
sys.stdout.flush()
time.sleep(0.1)
print_char("hello world")
如果
words
是字符串列表:
def print_char(words):
for s in words:
for c in s:
sys.stdout.write('%s' %c)
sys.stdout.flush()
time.sleep(0.1)
# erase the word
sys.stdout.write('\b'*len(s)) # backspace the cursor
sys.stdout.write(' '*len(s)) # overwrite with spaces
sys.stdout.write('\b'*len(s)) # backspace again, to write the next word
试试这个:
#!/usr/bin/env python3
import sys
import time
data = "this is a sentence with some words".split()
max_len=max([len(w) for w in data])
pad = " "*max_len
for w in data:
sys.stdout.write('%s\r' % pad)
sys.stdout.write("%s\r" % w)
sys.stdout.flush()
time.sleep(0.4)
print
举个例子,只是为了好玩
根据对这个问题的回答: 您可以这样做:
import time
import sys
CURSER_UP_ONE = '\x1b[1A'
ERASE_LINE = '\x1b[2K'
def delay_print(sentence, pause_between_words):
for s in sentence.split(" "):
sys.stdout.write( '%s' % s)
sys.stdout.flush()
time.sleep(pause_between_words)
print(ERASE_LINE + CURSER_UP_ONE)
delay_print("Hello World!", 0.5)
此代码将在我的终端中一次打印一个字,删除最后一个字并打印下一个字。最后一个字将在终止前删除。这就是你想要的工作方式吗?否则请告诉我
编辑:注意到您还希望在每个字符打印之间有一个延迟。我已经相应地更新了我的代码
编辑:根据你的评论,我逐字符打印删除了字符。这可能不是你想要的,也可能没有其他答案快,但你可以做的是:
import time, os
text = "This is a long sentence that has a lot of words in it.".split()
for i in range(len(text)):
os.system("clear")
print(text[i])
time.sleep(0.5)
os.system("clear")
其中text是您要键入的文本,time.sleep(XXX)是显示的单词之间的时间。如何使用
sys.stdout.write(“%s\r”%s)
,在此之前使用witespace是word中字符串的最大长度?当我运行此代码时,它会在所有字符之间添加一个空格。它不是删除前面的单词。至少有一种方法可以让我一个一个地打印单词吗?我刚刚在python3.3上测试了这个方法,它可以根据您的OP中的描述工作。您是想将每个单词打印在单独的一行中,还是想删除每个单词并用下一行覆盖它?另外,您使用的是哪一版本的python?我想删除这个单词并用下一个单词替换它。我正在使用Python3。3@edboysega321:那么该代码应该可以工作。它适用于我的py3.3。我通过Python shell运行这段代码,但我没有得到与gif文件相同的结果。哪个Python版本?哪一个操作系统(在gif中,我使用sleep 0.4只是为了清楚地区分单词)python 3.3.2我使用python 3.3.0(在linux上)对windows 8进行了测试,它可以正常工作。已将代码更新为我的确切版本(在gif中使用)。希望有帮助…我正在使用Python3.3.2 shell,但仍然遇到同样的问题,我想打印出一个单词,然后该单词被删除,下一个单词被打印。我不想一个接一个地打印字符,我已经相应地更新了代码以反映这一点。现在看起来怎么样?