4 案例3:编写类进度条程序
4.1 问题
创建railway.py文件,实现以下目标:
在屏幕上打印20个#号
符号@从20个#号穿过
当@符号到达尾部,再从头开始
4.2 方案
利用while循环方法依次打印1个@和19个#,每循环一次,@所在位置后移一位,利用\r后内容覆盖前面内容,并利用程序休眠时间差,达到动态效果,需要注意的是:
1.\r表示将输出的内容返回到第一个指针,后面的内容会覆盖前面的内容
2.sys.stdout.flush()这句代码的意思是刷新输出,让循环结果依次显示,而不是一次性显示
3.time模块中的sleep方法让程序休眠
4.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:编写脚本
[root@localhost day05] # vim railway.py
#!/usr/bin/env python3
import time
import sys
l = 19
counter = 0
print('#' * (l + 1), end='')
while True:
sys.stdout.flush()
time.sleep(0.2)
print('\r%s@%s' % ('#' * counter, '#' * (l - counter)), end='')
counter += 1
if counter > l:
counter = 0
步骤二:测试脚本执行
[root@localhost day05]# python3 railway.py
####@###############
[root@localhost day05]# python3 railway.py
###########@########^Z
[3]+ 已停止 python3 railway.py