前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python Print打印计时器功能

Python Print打印计时器功能

作者头像
用户7886150
修改2020-11-25 10:20:42
修改2020-11-25 10:20:42
1.9K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python | print()中的结束参数

1.倒计时 

我们仔细看看print的参数:print(value,sep=’ ‘,end=’\n’,file=sys.stdout,flush=False) 

这个value是我们要打印的字符串,sep则是value之间的间隔(我们可以print(“Hello”,“Python”)看到中间确实有一个空格间隔开了) 

end是打印完成之后要打印的事,print默认在结束的时候打印一个\n,即换行(我们想要print不换行,只要把end参数换成’'即可)。 

file=sys.stdout则是打印到哪里?sys.stdout是系统的控制台,即标准输出设备 

flush=False是说明print不开启缓冲区,我们要开启缓冲区只需把flush设置成True即可。 

倒计时程序,这里倒计时5秒 

import time

print("倒计时程序")

for x in range(5,-1,-1):

    mystr = "倒计时" + str(x) + "秒"

    print(mystr,end = "")

    print("\b" * (len(mystr)*2),end = "",flush=True)

    time.sleep(1)

来解释下: 

range(5,-1,-1)的意思是:使用range产生一个列表,从5开始到-1之前结束。range的用法是range(开始,结束,步长),因为我们是要从大到小,所以我们用-1表示步长为-1,意味着每次-1,如果是-2,那就是每次-2 

str(x)把x变量转换成字符串 

print(mystr,end = “”) 我们打印字符串之后,不换行,即end="" 

最重要的一条语句:print("\b" * (len(mystr)*2),end = “”,flush=True) 

“\b” * (len(mystr)2)这句话的意思是,打印’\b’这个转义字符,然后打印len(mystr)2次。len得到字符串长度,为什么要2呢?要知道,我们用的字符串是中文,而1个中文字符 = 2个英文字符(占位),所以,如果字符串是英语,我们完全可以不2,但是中文字符就不同了。具体小伙伴可以把*2去掉试试看 

flush = True则是开启缓冲区 

\b转义字符起了退格的功能,相当于在编辑文件的时候按下BackSpace键,从光标位置往前删掉一个字符 

time.sleep(1)则是让程序暂停1秒 

我们这样做的就能每次print之后,\b帮我们把一行内的字符都清光,这就是我们为什么要获得字符串长度的原因啦,还有就是Python的IDLE无法识别\b字符,所以我们只能在控制台看到正确的结果。 

2.显示百分比进度的程序 

import time

print("显示百分比")

for x in range(101):

    mystr = "百分比" + str(x) + "%"

    print(mystr,end = "")

    print("\b" * (len(mystr)*2),end = "",flush=True)

    time.sleep(0.5)

3.案例 

import time

input("欢迎使用“时间管理器”!请按回车继续。")

while True:

    task_name = input('请输入任务名:')

    task_time = int(input('你觉得自己至少可以专注这个任务多少分钟?输入 N 分钟'))

    input('此次任务信息:\n我要完成的任务:%s\n我至少要专注:%d分钟\n按回车开始计时:'%(task_name,task_time))

    start = time.time()  # 开始计时

    start_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))  # 格式化日期

    # 实际代码:分钟转成秒要乘60,用-1来倒计时。

    # for t in range(task_time*60,0,-1):

    for t in range(task_time,0,-1):

        info = '请专注任务,还要保持专注 ' + str(t) + ' 秒哦!'

        print(info,end="")

        print("\b"*(len(info)*2),end="",flush=True)

        time.sleep(1)

    print('你已经专注了 %d 分钟,很棒~再加把劲,完成任务!'%task_time)  # 倒计时后,才继续运行之后的代码。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档