【问题标题】:Progress bar for a while loop that uses conditionals and also for - Python 3使用条件的 while 循环的进度条,也用于 - Python 3
【发布时间】:2020-07-21 23:52:25
【问题描述】:

我希望有一个进度条在 while 循环之前开始并以它结束,如下所示:

            a = [ '1', '2', '3', '4', '5', '6'] ## This can be 10, 15, 1000 elements 
            b = 5
            c = []
            timeout = time.time() + 60*b
            while True:
                for i in a:
                    if len(a) < 2:
                        print('Ok')
                    elif len(a) >= 2:
                        a.remove(i)
                        time.sleep(10)

                if len(a) == 2 :
                    print('Achieved results')
                    break
                elif time.time() > timeout:
                    print('Time ran out')
                    break
                else:
                    print('Still waiting calculations')
                    pass

我知道我的超时是由一个变量定义的,但它仅限于我将通过这个参数提供的东西,但是我如何为所有时间制作一个进度条来计算这个?

另外,一旦计算完成或时间用完,我如何打破进度条?

谢谢

【问题讨论】:

    标签: python python-3.x while-loop progress-bar tqdm


    【解决方案1】:

    在我们解决之前,您当前的代码存在一些问题。

    1. 列表 a 包含字符串“1”、“2”和“3”。但是,您将 then 作为整数相加并检查整数值。
    2. 变量“i”也是一个字符串。所以你不能将整数 1 添加到 i。它会失败。

    你想重温一下代码吗?

    无法添加 cmets,因为我没有足够的积分来添加 cmets,因此请使用答案部分为您提供反馈。

    进入你的答案,除非你使用图形界面,否则没有简单的方法来提供一个栏。显示您正在进步的一种方法是每次进入循环时打印出一个字符串。

    例如,你可以有一个这样的 while 循环:

    x = 0
    while True:
        x +=1
        print ('=', end = '')
        if x > 20: break
    

    每次代码循环时,输出都会打印一个 =。您可以继续打印字符串 '=' 或 '.'每次你进入一个过程并从中摆脱出来。 end = '' 将确保打印语句保持在同一行。所以它最终会看起来像一个酒吧。

    根据我对 python 的有限了解,这是我能做到的最接近的。

    【讨论】:

    • 嗨,我已经更新了!只是我需要了解如何在这样的场景中实现它,我得到了 While > For > Ifs。非常感谢您的帮助!
    • 我对 while 循环的新更新对您有帮助吗?这对你有用吗?
    • 嘿,感谢您的帮助,但我无法应用它,因为我需要不断在屏幕上显示栏并且我希望它被分隔(就像每次它滴答作响时,我都会看到进度开始和结束)。我认为这可以完成,因为我有一个特定的超时,它将在实际的 WHILE 循环之前一直定义。有任何想法吗? Br
    猜你喜欢
    • 2018-01-30
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多