我有以下简单的代码:
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%,...
我做错了什么?
答案 0 :(得分:0)
这一行:
if ((i/(num_tasks-1)) % 5):
在True
不可被5整除的每次迭代中都会被解释为(i/(num_tasks-1))
,因为(i/(num_tasks-1)) % 5
将等于不同于0的值。你应该这样做:
if ((i/(num_tasks-1)) % 5 == 0):
答案 1 :(得分:0)
错误在这一行:
if ((i/(num_tasks-1)) % 5):
由于((i/(num_tasks-1)) % 5)
不是布尔值,因此if
语句将无法正常运行。 Here是关于Python中不同基元类型的真值的更多信息。试试这个:
if i/(num_tasks-1) % 5 == 0: