只是补充一下。如果你想回到开头并擦除该行的内容,你可以这样做:
text = "Here's a piece of text I want to overwrite"
repl = "BALEETED!" # What we want to write
print(text, end="\r") # Write the text and return
print(f'\r{repl: <{len(text)}}')
最后一行可能需要解释一下,所以我将其分解:
f'SOMETHING {var}' 是一个 f 字符串,相当于 'SOMETHING {}'.format('HERE')。它在 Python 3.6+ 中可用
所以替换变量的硬编码值,我们回到开头,然后编写替换字符串,然后用足够的空格替换原始文本。如果您想使用在这种情况下可能更清楚的旧格式方法:
print('\r{0: <{1}}'.format(repl, len(text)))
# Which becomes when extrapolated:
print('BALEETED ')
对于奖励积分,你不需要使用空格,你可以使用任何东西:
print('\r{0:░<{1}}'.format(repl, len(text)))
# Which becomes when extrapolated:
print('DELETED░░░░░░░░░░░░░░░░░░░░░░░░░░░░░')
或者为了额外的 BONUS 把它变成一个函数:
from time import sleep
def overprint(text,repl, t=1, char=" "):
print(text, end="\r")
sleep(t)
print('\r{0:{1}<{2}}'.format(repl, char, len(text)))
overprint("The bomb will explode in one sec...", "BOOM!")