当前位置: 首页 > news >正文

打印名片-课后程序(Python程序开发案例教程-黑马程序员编著-第二章-课后作业)

实例3:文本进度条

进度条以动态方式实时显示计算机处理任务时的进度,它一般由已完成任务量与剩余未完成任务量的大小组成。本实例要求编写程序,实现图1所示的进度条动态显示的效果。

  1. 下载中

 

  1. 下载完成

 

图1文本进度条

实例分析

在本实例中可以将进度条拆分为百分比、已完成下载量、未完成下载量、显示输出四部分,其中百分比使用已完成下载量除以下载总量乘100%所得,已完成下载量使用符号“*”表示,未完成下载量使用符号“.”来表示,显示输出通过print()函数与format()函数将计算结果根据指定格式输出。

进度条中的下载总量可以设定为50,使用for循环遍历range()函数生成显示下载总量的整数序列,使用print()函数与format()函数将它们进行格式化输出;进度条的实时刷新可以使用\r来完成,\r可以将输出的内容返回到第一个指针,后面的内容将会覆盖掉前面的内容,便可以完成实时刷新的效果;最后使用time模块中的sleep()方法控制进度条下载的速度。根据以上分析可整理出以下实现思路:

(1)导入time模块

(2)设定下载总量

(3)设定for循环的次数

(4)在for循环中分别计算已完成下载量、未完成下载量、百分比

(5)在for循环中对已完成下载量、未完成下载、百分比进行格式化输出

(6)设置进度条下载速度

代码实现

import time           # 导入time模块

incomplete_sign = 50   # 下载总量

print('='*23+'开始下载'+'='*25)

for i in range(incomplete_sign + 1):

    completed = "*" * i   # 已完成下载量

    incomplete = "." * (incomplete_sign - i)  # 未完成下载量

    percentage = (i / incomplete_sign) * 100  # 百分比

    print("\r{:.0f}%[{}{}]".format(percentage, completed, incomplete),

 end="")

    time.sleep(0.5)

print("\n" + '='*23+'下载完成'+'='*25)

首先使用import语句导入time模块,然后将设定的下载总量赋值给变量incomplete_sign,通过for循环遍历range()函数生成的整数序列。需要注意的是,当range()函数没有指定其实数字时,生成的整数序列从0开始,当进度条下载量为0%时,需要使用50个“.”表示,因此生成的整数序列为incomplete_sign+1,接着分别计算已完成下载量,未完成下载量、百分比。在使用print()函数输出时,需要注意最后使用end=""替换末尾的换行符,这样每次刷新的进度条都只在一行中显示。

代码测试

运行代码,控制台输出结果如下(下载中):

=======================开始下载=========================

56%[****************************......................]

运行代码,控制台输出结果如下(下载完成):

=======================开始下载=========================

100%[**************************************************]

=======================下载完成=========================

http://www.lryc.cn/news/29008.html

相关文章:

  • 为什么我们在判断字符串不为null后还要判断字符串长度大于0?
  • javaEE 初阶 — 应用层中的 DNS 协议(域名解析系统)
  • 【网络】-- 网络编程套接字(铺垫、预备)
  • 一文打通@SentinelResource
  • 苹果手机备份的文件在电脑什么地方 苹果备份文件怎么查看
  • 【MySQL速通篇001】5000字超详细介绍MySQL部分重要知识点
  • 并发编程——synchronized优化原理
  • LeetCode 剑指 Offer II 083. 没有重复元素集合的全排列
  • JSONObject与JSONArray使用区别
  • 经典C程序例程:通过进程ID得到文件名
  • 【Java】Spring MVC程序开发
  • leetcode题解-704. 二分查找
  • 2.2 C语言程序的错误条件
  • laravel 邮件发送
  • 高性能 Jsonpath 框架,Snack3 3.2.57 发布
  • Android---进程间通信机制3
  • Python实战,爬取金融期货数据
  • Allegro如何导入第三方网表操作指导
  • 高码率QPSK调制解调方案(FPGA实现篇)
  • Elasticsearch的RESTful Api使用
  • 软著申请需要注意的
  • SpringBoot入门 - 添加Logback日志
  • 社会实践报告
  • LeetCode 460. LFU 缓存 -- 哈希查询+双向链表
  • Dubbo 源码分析 – SPI 机制
  • JDBC概述二(JDBC编程+案例展示)
  • 广度和深度优先搜索解析与示例代码
  • 基于SLIC超像素的归一化分割算法
  • C语言刷题(4)——“C”
  • 带你看懂RuoYi动态数据源切换