python-Error Message: ‘float‘ object cannot be interpreted as an integer
背景
因为需要通过模拟回调,所以写了一段代码来获取数据库内的数据,然后把数据发给应用服务器。代码在Python2运行得好好的,结果copy在Python3上面就报错。
出问题的代码如下:
batch = 200
for x in range(len(order_numbers) / batch + 1):
# do something
order_numbers
是订单列表。脚本主要的功能是分批次回调,一个批次200. 报错信息的意思是:float类型不能解释为int类型 。 奇怪得很,py2都好好的,到py3就不行 。
解决
为什么range内的数据是float呢 ?
最初是怀疑/
在py2跟py3之间有差别,然后搜了一下,的确是有差别。请看下面的用法:
Python2
C:\Users\chenjun>python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (
AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 0/200 + 1
1
>>> 1/200 + 1
1
Python3
C:\Users\chenjun>python3
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]
on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 0/200 + 1
1.0
>>> 1/200 + 1
1.005
在Python2里:/
只留下了整数部分,去掉了小数,结果是int型。
在Python3里:/
的结果是真正意义上的除法,结果是float型。所以便出现了Error Message: ‘float’ object cannot be interpreted as an integer。
感谢补充
多谢 @冲动的MJ
的回复: python3中用双//
就可以了
posted on 2017-10-23 17:32 AmosChen 阅读(11) 评论(0) 编辑 收藏 举报 来源