【python】进度条的简单实现

简单实现

效果

[>>>>>>>>>>>>--------]

代码

import time

# 主函数
def main(n):
    for i in range(n):
        time.sleep(1.5)  # 假设每个任务的等待时间是1.5s
        show((i+1)/n)

# 进度条打印函数
def show(perFin):
    barLen = 20  # 进度条的长度
    numFin = round(barLen*perFin)
    numNon = barLen-numFin
    print(f"[{'>'*numFin}{'-'*numNon}]", end='\r')
    if perFin==1.0:
		print()

main(5)

说明

参数描述
perFin已完成进度
barLen进度条长度
numFin已完成个数
numNon未完成个数

改进一下

效果

[>>>>>>>>>>>>--------] 任务进度: 60.00% 已用时间: 4.50S 剩余时间: 3.00S

代码

import time

# 主函数
def main(n):
    t1 = time.time()
    for i in range(n):
        time.sleep(1.5)  # 假设每个任务的等待时间是1.5s
        t2 = time.time()
        runTime = t2-t1
        show((i+1)/n, runTime)

# 进度条打印函数
def show(perFin, runTime):
    barLen = 20  # 进度条的长度
    numFin = round(barLen*perFin)
    numNon = barLen-numFin
    leftTime = (1-perFin)*(runTime/perFin)
    print(
        f"[{'>'*numFin}{'-'*numNon}]",
        f"任务进度: {perFin*100:.2f}%",
        f"已用时间: {runTime:.2f}S",
        f"剩余时间: {leftTime:.2f}S",
        end='\r'
    )
    if perFin == 1.0:
        print()

main(5)

完美方案

效果

3/5 |████████████        | 任务进度: 60.00% 已用时间: 4.50S 剩余时间: 3.00S

代码

import time

# 主函数
def main(n):
    t1 = time.time()
    for i in range(n):
        time.sleep(1.5)  # 假设每个任务的等待时间是1.5s
        t2 = time.time()
        runTime = t2-t1
        show(i+1, n, runTime)

# 进度条打印函数
def show(num, _sum,  runTime):
    barLen = 20  # 进度条的长度
    perFin = num/_sum
    numFin = round(barLen*perFin)
    numNon = barLen-numFin
    leftTime = (1-perFin)*(runTime/perFin)
    print(
        f"{num:0>{len(str(_sum))}}/{_sum}",
        f"|{'█'*numFin}{' '*numNon}|",
        f"任务进度: {perFin*100:.2f}%",
        f"已用时间: {runTime:.2f}S",
        f"剩余时间: {leftTime:.2f}S",
        end='\r'
    )
    if num == _sum:
        print()

main(5)

温馨提示

time.sleep()是让程序休眠,以模拟正常任务执行花费的时间。

拓展思维

进度条显示的字符可以随意调节:

[>>>>>>>>>>>>--------]
[████████████        ]
[############        ]
[❀❀❀❀❀❀❀❀       ]
[♂♂♂♂♂♂♂♂♂♂♂♂        ]
[☻☻☻☻☻☻☻☻☻☻☻☻☻       ]
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值