您的位置:首页 > 编程语言 > Python开发

Python练习实例:文本进度条——数据类型的综合应用

2019-10-08 12:19 447 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/PigeonKiing/article/details/102375664

问题描述

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

问题分析

首先,这个问题要求打印出类似进度条的字符串,这就会涉及到字符串操作符、字符串函数、字符串输出格式化等知识;
其次,这个问题要求进度条在一行中逐渐变化,这就要求每次字符串的输出不换行且覆盖原来输出的内容,要求会使用转义符“\r”,“\n”等。
最后,设计好程序的结构,即输入和输出,结合上面分析的程序主体,即可完成问题。

求解过程

问题简化

为了更快的将程序主体设计好,我们将问题尽可能的简化。
这个问题,我们可以先将它简化成:
制作几个格式符合要求的的字符串,并将他们逐一输出。

#referes_bar.py
import time as t
start_t=t.perf_counter()
print("安装开始".center(10,"="))
for i in range(11):
a=i*"*"
b=(10-i)*"."
c=i*10
d=t.perf_counter()-start_t
print("{:3}% [{}>{}] {:.2f}s".format(c,a,b,d))
t.sleep(0.1)
print("安装结束".center(10,"="))

输出结果如下:

=== RESTART: E:/Python3/Doc/class/Lesson3.Number Structure/refresh_bar.py ===
===安装开始===
0% [>..........] 0.04s
10% [*>.........] 0.16s
20% [**>........] 0.39s
30% [***>.......] 0.52s
40% [****>......] 0.64s
50% [*****>.....] 0.78s
60% [******>....] 0.90s
70% [*******>...] 1.01s
80% [********>..] 1.13s
90% [*********>.] 1.35s
100% [**********>] 1.47s
===安装结束===

问题具体化

我们只需要将每一次的输出内容稍作调整,即可达成我们需要的功能:打印可以动态变化的文本进度条‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬,进度条需要能在一行中逐渐变化。

print("\r{:3}% [{}>{}] {:.2f}s".format(c,a,b,d),end="")

其中,"\r"作为转义符是回到本行行首的命令,也就是说我们每一次输出都是在光标所在行的行首开始输出;end="",在输出的结果后面添加一个空字符,因为每次输出会默认在结尾输入“\n”,因此造成每次都是在第二行行首开始输出,而end=""可以以空字符结尾,取缔“\n”,使得程序可以在同一行进行输出,从而产生刷新的效果。

最终程序

#referes_bar.py
import time as t
start_t=t.perf_counter()
print("安装开始".center(10,"="))
for i in range(11):
a=i*"*"
b=(10-i)*"."
c=i*10
d=t.perf_counter()-start_t
print("\r{:3}% [{}>{}] {:.2f}s".format(c,a,b,d),end="")
t.sleep(0.1)
print(“\n”,"安装结束".center(10,"="))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: