下面的代码给出了每20次迭代的0%,而不是我希望它显示的实际百分比。
n=100
for i in range(n):
if i% 20 ==0:
print str(i/n*100) + '%, Progress'
结果:
0%, Progress
0%, Progress
etc.....
我必须遗漏一些非常简单的事情。谢谢。
答案 0 :(得分:1)
将除法更改为i /(float)n * 100,以便python解释器将结果输出格式化为小数点。
答案 1 :(得分:1)
除法自动向下舍入到最接近的整数。 你的代码中会发生什么: 我= 20 n = 100
i / n = 20/100,变为0。 然后(i / n)* 100 = 0 * 100 = 0。 您可以通过首先将i乘以100然后除以n来解决此问题: 我* 100 / N
答案 2 :(得分:1)
n=100
for i in range(n):
print(i);
if i% 20 ==0:
print str((float(i)/float(n))*100) + '%, Progress'
对于python i / n是根据你的变量声明的(int)/(int)。所以我试图给i / n一个总是0的int答案。
答案 3 :(得分:0)
在每次迭代中,i/n*100
向下舍入到最接近的整数(这就是除法运算符在python2中对整数进行处理的方式)。
您可以使用显式投射到float()
或预先执行from __future__ import division
。这将阻止除法运算符自动向下舍入。
Here您可以找到类似问题的详细说明。