编写一个爱心文本进度条(Python)

73 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

1.什么是time库

time库是Python中处理时间的标准库,是最基础的时间处理库。

time库的功能如下:

  1. 计算机时间的表达
  2. 提供获取系统时间并格式化输出功能
  3. 提供系统级精确计时功能,用于程序性能分析

格式如下: import time

time.( )

time库包括三类函数:

  1. 时间获取:time()、ctime()、gmtime()、localtime()
  2. 时间格式化:strftime()、strptime()、asctime()
  3. 程序计时:sleep()、perf_counter()

2.如何去做一个进度条?

思路:

采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化

如何获得文本进度条的变化时间?

采用sleep()模拟一个持续的进度

先进行简单的调试:

image.png

import time
scale=10
print("开始对爱进行充能!!!")
scale=10
for i in range(scale+1):
    a='*'*i
    b='.'*(scale-i)
    c=(i/scale)*100
    print("{:^3.0f}%[{}->{}]\r".format(c,a,b))
    time.sleep(0.1)
print("元气满满,又是爱狗妹的一天!!!")

这里我们需要注意:

  1. 单行动态刷新,刷新的关键是\r
  2. 刷新的本质是:用之后打印的字符覆盖之前的字符
  3. 不能换行!!!:print()需要被控制
  4. 要能回退:打印后光标退回到之前的位置\r
  5. .format(),end=""简单理解就是如果我们希望输出的字符串后面增加什么信息,就在end参数中增加,如果不希望增加换行,那么就将end字符设置为空字符串。

下面进行完整代码展示:

image.png

import time
scale=10
print("开始对爱进行充能!!!")
scale=10
for i in range(scale+1):
    a='♥'*i
    b='.'*(scale-i)
    c=(i/scale)*100
    print("\r[{}{}]{:^3.0f}%".format(a,b,c),end="")
    time.sleep(0.5)
print("\n元气满满,又是爱狗妹的一天♥")

3.总结

位于 time 模块中的 sleep(secs) 函数,可以实现令当前执行的线程暂停 secs 秒后再继续执行。 所谓暂停,即令当前线程进入阻塞状态,当达到 sleep() 函数规定的时间后,再由阻塞状态转为就绪状态,等待 CPU 调度。

sleep() 函数位于 time 模块中,因此在使用前,需先引入 time 模块。

sleep() 函数的语法规则如下所示:

time.sleep(secs)

其中,secs 参数用于指定暂停的秒数。一般计算机的计时是按照毫秒来做单位的,注意此处是秒。