2016-11-21 89 views
0

我有以下簡單的代碼:進度條,5%步驟

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%,... 

我在做什麼錯?

+3

什麼是錯誤/意外的結果?請將此添加到您的問題。 – lucasnadalutti

回答

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):

+0

你試過這個解決方案嗎?因爲這隻會告訴我'完成0%',因爲這只是第一個i值的「真實」。 –

0

該錯誤是在這條線:

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

因爲((i/(num_tasks-1)) % 5)不是一個布爾值,你if語句將無法正常運行。 Here是關於Python中不同基元類型的真值的更多信息。試試這個:

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