Amos的随笔

Java/Python/Go,软件测试等等

导航

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编辑  收藏  举报  来源