zoukankan      html  css  js  c++  java
  • 【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='
    ')
        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='
    '
        )
        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='
    '
        )
        if num == _sum:
            print()
    
    main(5)
    

    温馨提示

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

    拓展思维

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

    [>>>>>>>>>>>>--------]
    [████████████        ]
    [############        ]
    [❀❀❀❀❀❀❀❀       ]
    [♂♂♂♂♂♂♂♂♂♂♂♂        ]
    [☻☻☻☻☻☻☻☻☻☻☻☻☻       ]
    
  • 相关阅读:
    C Primer+Plus(十七)高级数据表示 复习题
    C Primer+Plus(十七)高级数据表示(三)
    C Primer+Plus(十七)高级数据表示(二)
    C Primer+Plus(十七)高级数据表示(一)
    C Primer+Plus(十四)编程练习
    AI时代什么最重要,什么是AI时代的基础资产?
    AI在哪些领域里都有哪些应用?
    什么是AI、大数据、深度学习......它们之间什么关系?
    说话的套路
    全书结构
  • 原文地址:https://www.cnblogs.com/ghgxj/p/14219079.html
Copyright © 2011-2022 走看看