2016-10-03 65 views
0

下面的代碼給了我每個第20次迭代0%,而不是我希望它顯示的實際百分比。分區給出0循環,爲什麼?

n=100 
for i in range(n): 
    if i% 20 ==0: 
     print str(i/n*100) + '%, Progress' 

結果:

0%, Progress 
0%, Progress 
etc..... 

我必須失去了一些東西真的很簡單。謝謝。

回答

1

將除法更改爲i /(float)n * 100,以便由python解釋器將結果輸出格式化爲小數點。

+0

謝謝大家,非常感謝您的幫助。因爲我是初學者,這對我來說是新的,而且我必須看看我的其他一些代碼,我可能會通過分區來犯同樣的錯誤。 – AlmostGr

1

分區自動舍入到最接近的整數。 在代碼發生的是: I = 20 N = 100

I/N = 20/100,其變爲0 然後(I/N)* 100 = 0 * 100 = 0。 您可以通過首先乘以100 i和然後除以n解決這個問題: 我* 100/N

0

在每次迭代中i/n*100被向下舍入到最接近的整數(這是除法運算符是如何工作的上整數在python2)。

您可以使用明確的鑄造float()或預先執行from __future__ import division。這會阻止分隔操作員自動舍入。

Here你可以找到類似問題的詳細描述。

1

n=100 for i in range(n): print(i); if i% 20 ==0: print str((float(i)/float(n))*100) + '%, Progress'

根據你的變量聲明蟒I/n是一個(INT)/(INT)。所以ti試圖給我一個int的答案,它始終爲0.