如何使用 \r 替换前一行的字符串(Python)

1 投票
1 回答
640 浏览
提问于 2025-04-20 18:00

我正在尝试制作一个从60秒开始的倒计时器。我的问题是,当我运行这个功能时,程序会像这样打印出代码:

60

59

58

...等等

我该如何替换第一行的60,把59放在它的位置,而不是打印出60行呢?

这是我的代码:

from __future__ import division
import sys, time 

def countdown():
    seconds = 60
    while seconds >= 0:
        print seconds
        sys.stdout.flush()
        time.sleep(1)
        seconds -= 1

1 个回答

3

在你的 countdown 函数开始时打印一个空行。这会为 \r 的工作提供所需的空行。接下来,把 print seconds 的部分替换成

sys.stdout.write('\r  \r')
sys.stdout.write(str(seconds))

第一行的作用是清除函数开始时打印的那个空行。第二行则是输出秒数。

代码如下:

def countdown():
    seconds = 60
    print ''
    while seconds >= 0:
        sys.stdout.write('\r  \r')
        sys.stdout.write(str(seconds))
        sys.stdout.flush()
        time.sleep(1)
        seconds -= 1

撰写回答