【问题标题】:How can I use tqdm to show the progress of a while loop? [duplicate]如何使用 tqdm 显示 while 循环的进度? [复制]
【发布时间】:2020-05-21 17:45:28
【问题描述】:

我已经看到 tqdm 用于显示 for 循环的进度,但我想知道如何使用 while 循环来做到这一点。 我这里有一些代码可以获取任意次数翻转硬币的百分比:

def flipem():
    global flips, completed_flips, heads, tails, head_amount, tail_amount, total_amount
    while completed_flips != flips:
        flip = randint(1, 2)
        if flip == 1:
            head_amount += 1

        elif flip == 2:
            tail_amount += 1

        else:
            pass

        completed_flips += 1
        total_amount += 1


    if completed_flips == flips:
        global head_percentage, tail_percentage
        head_percentage = head_amount / total_amount * 100
        tail_percentage = tail_amount / total_amount * 100

该代码本质上是接受用户的输入并多次掷硬币,然后给出正面和反面的百分比。

虽然发生这种情况,但我希望有一个进度条,但我不知道如何将 tqdm 与 while 循环一起使用。

有人知道如何或有替代方法吗? 谢谢。

编辑:顺便说一句,这段代码还有更多内容,但我决定不添加它,因为我认为它无关紧要。

【问题讨论】:

  • 如何确定无限循环的进度?它要么在循环,要么不是。即 0% 或 100%。
  • @r.ook 这是一个非常好的观点。
  • 在你的情况下,既然你确实知道你想达到多少flips,请将tqdm包裹在for flip in range(len(flips)): ...周围
  • @r.ook 我在事先不知道翻转次数的情况下想出了如何做到这一点:for i in tqdm(range(0, flips):
  • 我建议您添加您的评论作为您自己问题的答案,这将对未来的访问者遇到您的问题大有裨益。当你自己得出结论时,我不想抢走你的风头。获得一些支持:)

标签: python python-3.x progress-bar python-3.6 tqdm


【解决方案1】:

正如@r.ook 所说:如何确定无限循环的进度?它要么是循环的,要么不是。即 0% 或 100%。 所以, tqdm 仅适用于 for 循环。 解决办法:

for i in tqdm(range(0, flips):

这样,即使事先不知道迭代次数,它仍然会显示一个进度条。

【讨论】:

  • 嗯,我认为这个答案具有误导性。您可以将 tqdm 与 while 循环一起使用,只要您为迭代设置上限。检查stackoverflow.com/a/45808255/4240413,这是对与此处的问题几乎相同的问题的答案。我认为该解决方案可以适应您的情况,翻转最大迭代次数。
猜你喜欢
  • 2018-01-30
  • 1970-01-01
  • 2017-06-14
  • 2013-11-05
  • 1970-01-01
  • 2018-10-12
  • 2022-01-12
  • 2020-10-02
  • 1970-01-01
相关资源
最近更新 更多