下面的代碼給了我每個第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.....
我必須失去了一些東西真的很簡單。謝謝。
下面的代碼給了我每個第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.....
我必須失去了一些東西真的很簡單。謝謝。
將除法更改爲i /(float)n * 100,以便由python解釋器將結果輸出格式化爲小數點。
分區自動舍入到最接近的整數。 在代碼發生的是: I = 20 N = 100
I/N = 20/100,其變爲0 然後(I/N)* 100 = 0 * 100 = 0。 您可以通過首先乘以100 i和然後除以n解決這個問題: 我* 100/N
在每次迭代中i/n*100
被向下舍入到最接近的整數(這是除法運算符是如何工作的上整數在python2)。
您可以使用明確的鑄造至float()
或預先執行from __future__ import division
。這會阻止分隔操作員自動舍入。
Here你可以找到類似問題的詳細描述。
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.
謝謝大家,非常感謝您的幫助。因爲我是初學者,這對我來說是新的,而且我必須看看我的其他一些代碼,我可能會通過分區來犯同樣的錯誤。 – AlmostGr