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 删除。