简单实现
效果
[>>>>>>>>>>>>--------]
代码
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()
是让程序休眠,以模拟正常任务执行花费的时间。
拓展思维
进度条显示的字符可以随意调节:
[>>>>>>>>>>>>--------]
[████████████ ]
[############ ]
[❀❀❀❀❀❀❀❀ ]
[♂♂♂♂♂♂♂♂♂♂♂♂ ]
[☻☻☻☻☻☻☻☻☻☻☻☻☻ ]