0

好的,我代表其他人问这个问题,但我也想知道它是否以及如何可能。

假设您有给定的代码行生成字符串

剩余时间:4

有什么办法可以在打印此字符串后编辑“4”的值并将其更改为“3”,然后在同一行上重新打印新字符串,以便剩余时间:4 替换为剩余时间: 3 不会导致打印新行。

我希望你能理解我尽力解释的问题。

4

3 回答 3

6

打印回车符 ( ),并通过添加到打印参数来\r确保您的print语句没有写入换行符。end=''每次打印后,确保使用sys.stdout.flush(). 例如:

import time
import sys

for i in range(4, 0, -1):
    print('\rTime left:', i, end='')
    sys.stdout.flush()
    time.sleep(1)

在 Python 2.x where printis a statement 而不是函数上,只需添加尾随逗号以防止换行:

import time
import sys

for i in range(4, 0, -1):
    print '\rTime left:', i,
    sys.stdout.flush()
    time.sleep(1)
于 2013-09-11T15:50:27.737 回答
2

一种方法是打印退格转义字符 ( \b),这会将文本光标向后移动一个字符;但是,您有责任在之后打印一些内容来替换文本。

例如,如果终端中的当前文本是Time left: 4print "\b",用户将看到没有任何变化。但是,如果您 p​​rint "\b5",它将用 5 替换它。

于 2013-09-11T15:52:10.517 回答
1
3>> for i in range(5, 0, -1):
...   print('\rTime left: {}      '.format(i), end='', flush=True)
...   time.sleep(1)
... 
Time left: 1      

(注意:输出实际上会在您的系统上发生变化:P)

于 2013-09-11T15:53:57.650 回答