首页 > 解决方案 > 算术运算的Python问题

问题描述

我有一行 Python 代码不能正常工作(至少据我所知)。以下是代码行:

print 'progress: {}%'.format((i/len(e_numbers))*100)

的值从i开始0并上升到 的长度e_numbers为 a list,而 的长度e_numbers约为17000。但代码总是打印Progress: 0%.

知道为什么吗?

标签: pythonpython-2.7

解决方案


在 Python 2 中,使用/to 除两个整数默认执行整数除法,将结果向下舍入到最接近的整数值。因此,只要i介于 0 和 之间len(e_numbers),,i/len(e_numbers)就会为 0。有两种可能的解决方案:

  1. 在除法之前将一个或两个操作数转换为浮点数,例如,float(i)/len(e_numbers)

  2. 放在from __future__ import division文件的顶部,以便/始终产生浮点数。


推荐阅读