python中的 \r以及基于此实现简单的倒计时小程序

本文介绍了一个使用Python实现的倒计时小程序,并详细解释了如何利用字符串操作中的特殊字符来控制输出效果,包括如何使用 进行光标定位,以及如何结合 和 实现复杂输出格式。通过实例演示,读者可以掌握在Python中进行高效、灵活的字符串输出技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:本程序在windows7_64中编译通过,其它系统可能有所差别。


在python中 “\r” 表示回车符,在打印输出时如果后面没有 \n 就不会换行(在windows系统中换行是\r\n),而是将光标移动到本行的最前面,接下来输出的内容就会从第一个字符位置覆盖原来的字符。


可以看到:\r后面的字符’d'覆盖了最开始输出的字符‘a'

基于这种特点,在《笨方法学python》中有这样一个有趣的例子:

while True:
    for i in ["/","-","|","\\","|"]:
        print "%s\r" % i,


上面的代码中print那行的语句以逗号结尾是因为print打印输出时默认换行的,结尾放个逗号可以避免换行,这样光标才会回到同一行的起始位置。

下面是我自己实现的倒计时小程序:

import time
def getdigit(t):#用于获取整数的位数
    if t == 0:
        return 1
    else:
        c = 0
        while t!= 0:
            t = t/10
            c += 1
        return c


count = 0
a = input('time: ')
d1 = getdigit(a)
while(count < a):
    ncount = a - count
    d2 = getdigit(ncount)
    fillter = ""
    for i in range(d1-d2):#比如如果倒计时从100到99,少了一位,就要补充一个空格才能完全覆盖上一个整数。
        fillter += " "
    formatter = "%d" + fillter + "\r"
    print formatter % ncount,
    time.sleep(0.1)
    count += 1
print "done"


### Python 新年倒计时 3 2 1 实现代码 为了创建一个简单的新年倒计时程序,可以使用 `time` 库来处理时间延迟,并打印出倒计时效果。下面是一个基本的例子: ```python import time def countdown_timer(seconds): while seconds: mins, secs = divmod(seconds, 60) timer = '{:02d}:{:02d}'.format(mins, secs) print(timer, end="\r") # \r returns the cursor to the start of the line. time.sleep(1) seconds -= 1 print("新年快乐!") countdown_seconds = 3 countdown_timer(countdown_seconds) ``` 这段代码定义了一个名为 `countdown_timer` 的函数,它接受秒数作为参数并执行倒计时操作直到达到零,在此之后会显示祝福语句[^2]。 如果希望这个倒计时更加生动有趣,比如加上图形界面或者保存成带有文字的图片,则需要用到额外库如 `Pillow` 来绘制图像。这里给出一段基于 Pillow 创建带数字的倒计时图片片段: ```python from PIL import Image, ImageDraw, ImageFont for i in range(3, 0, -1): im = Image.new('RGBA', (400, 400), color=(255, 255, 255)) d = ImageDraw.Draw(im) fnt = ImageFont.truetype('/path/to/font.ttf', 150) # 需要指定字体路径 text = str(i) width, height = d.textsize(text, font=fnt) position = ((im.width-width)/2,(im.height-height)/2) d.text(position, text=text, fill="red", font=fnt) filename = 'new_year_countdown_' + str(i)+'.png' im.save(filename) print(f"{filename} 已经被创建.") ``` 上述脚本循环三次分别生成含有 "3"、"2" 和 "1" 数字的 PNG 文件,每次都将当前数值居中放置于白色背景之上,并设置红色填充颜色以及自定义大小和样式的字体[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值