下面的代码给了我每个第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