2016-11-21 14 views
0

私は、次の簡単なコードを持っている:私は間違って何をやっているプログレスバーは、手順

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

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%のステップを表示したいということですが?

+3

エラー/予期しない結果は何ですか。あなたの質問にこれを加えてください。 – lucasnadalutti

答えて

0

このライン:

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

(i/(num_tasks-1)) % 5が0とは異なる値と同じになりますので、あなたが代わりに行う必要があり、(i/(num_tasks-1))が5で割り切れないである反復ごとにTrueと解釈されます:

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

+0

あなたはその解決策を試しましたか?これは最初のi値が「真」であるため、「done 0%」と表示されるからです。 –

0

エラーは、この行にある:

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

((i/(num_tasks-1)) % 5)がブール値ではありませんので、ごifステートメントが正常に動作しません。 Hereは、Pythonのさまざまなプリミティブ型の真理値に関するさらに詳しい情報です。代わりにこれを試してください:

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