5%步进进度条

2024-04-27 03:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下简单代码:

import sys
num_tasks = 1000000
for i in range(num_tasks):
    if ((i/(num_tasks-1)) % 5):
        sys.stderr.write('\rdone {0:.0%}'.format(i/(num_tasks-1)))

我的问题是我只想展示5%的步骤,比如:

done 5%, done 10%, done 15%,...

我做错什么了?你知道吗


Tags: 代码inimportformatforifstderrsys
2条回答

错误在这一行:

if ((i/(num_tasks-1)) % 5):

因为((i/(num_tasks-1)) % 5)不是布尔值,所以if语句的行为将不正常。Here是关于Python中不同基元类型的真值的更多信息。请尝试以下操作:

if i/(num_tasks-1) % 5 == 0:

这条线:

if ((i/(num_tasks-1)) % 5):

(i/(num_tasks-1))不可被5整除的每个迭代中,将被解释为True,因为(i/(num_tasks-1)) % 5将等于不同于0的值。相反,您应该:

if ((i/(num_tasks-1)) % 5 == 0):

相关问题 更多 >