当前位置 : 主页 > 编程语言 > python >

Python关于print的操作(倒计时、转圈显示、进度条)

来源:互联网 收集:自由互联 发布时间:2023-05-14
目录 前言 步入正题 1、横条加载 2、倒计时显示 3、转圈等待显示 4、进度条显示 进度条改进版 进度条升级版 tqdm模块 progressbar模块 总结 前言 在python中,print是重要的输出语句,让我们
目录
  • 前言
  • 步入正题
    • 1、横条加载
    • 2、倒计时显示
    • 3、转圈等待显示
    • 4、进度条显示
  • 进度条改进版
    • 进度条升级版
      • tqdm模块
      • progressbar模块
    • 总结

      前言

      在python中,print是重要的输出语句,让我们更方便的知道程序的运行状况,但是这样还不够,我们也可以用print来给周围的小伙伴秀一下

      步入正题

      • \r表示将光标的位置回退到本行的开头位置
      • \b表示将光标的位置回退一位

      1、横条加载

      num = 20
      for i in range(num):
          print("#")

      打印结果:

      #
      #
      #
      #
      。。。。(此处省略剩下16个 #)

      结果发现这样很丑,达不到我们的预期,所以,在print里面,我们有一个flush,是及时刷新的意思,默认为False,只有所有内容都有来然后一次性打印出来,为True时是及时更新print的信息

      import time
      num = 20
      for i in range(num):
          print("#", end="", flush=True)
          time.sleep(0.1)

      这次我们加上time中延迟的sleep来综合试一下

      打印结果:

      2、倒计时显示

      import time
      for i in range(5, 0, -1):
          print("\r", "倒计时{}秒!".format(i), end="", flush=True)
          time.sleep(1)

      打印结果:

      print中,\r就可以让打印之后有重新回到本行开头的位置继续打印,相当于重新刷了一遍,但是我们不难发现,倒计时前面有个小空缺,那是因为"\r"占了一个小位置,所以我们把代码重新改造一下。

      import time
      for i in range(5, 0, -1):
          print("\r倒计时{}秒!".format(i), end="", flush=True)
          time.sleep(1)
      print("\r倒计时结束!")

      打印结果:

      3、转圈等待显示

      话不多说直接上代码

      import time
      sum = 10         # 设置倒计时时间
      timeflush = 0.25  # 设置屏幕刷新的间隔时间
      for i in range(0, int(sum/timeflush)):
          list = ["\\", "|", "/", "—"]
          index = i % 4
          print("\r程序正在运行 {}".format(list[index]), end="")
          time.sleep(timeflush)

      运行结果:

      4、进度条显示

      import time
      days = 365
      for i in range(days):
          print("\r进度条百分比:{}%".format(round((i + 1) * 100 /days)), end="", flush=True)
          time.sleep(0.02)

      打印结果:

      进度条改进版

      import time
      num = 50         #设置倒计时时间
      timeflush = 0.5   #设置屏幕刷新的间隔时间
      for i in range(0, int(num/timeflush)+1):
          print("\r正在加载:" + "|" + "*" * i + " "*(int(num/timeflush)+1-i)+"|" + str(i)+"%", end="")
          time.sleep(timeflush)
      print("\r加载完成!")

      打印结果:

      进度条升级版

      我们通过加入一些进度条模块,可以实现进度条炫酷的效果

      tqdm模块

      我们在cmd中下载tqdm模块

      pip install tqdm

      我们在pycharm中加入tqdm模块

      勾选Install to user's site packages directory

      点击Install Package

      然后代码如下:

      from tqdm import tqdm
      for i in tqdm(range(10000)):
          pass

      运行结果:

      这里根据每个电脑的不同而范围不同,电脑性能好的同学可以适当的值调大,这样会显示最佳的体验效果

      progressbar模块

      现在cmd中下载progressbar模块,命令是

      pip install progressbar

      即可安装成功

      然后在pycharm中安装progressbar模块

      勾选Install to user's site packages directory

      点击Install Package

      代码如下:

      from progressbar import *
      import time
      pro = ProgressBar()  # 将progressbar中的ProgressBar实例化
      for i in pro(range(1000)):
          time.sleep(0.01)

      运行结果:

      我的电脑不知道怎么回事,正常的画面加载不出来,但是不影响程序,程序是对的,我在 time.sleep(0.01)下面加了个print()就是这个样子,要不然加载条不出来。同学可以自己查查资料哟

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

      上一篇:Python技巧之四种多线程应用分享
      下一篇:没有了
      网友评论