背景:
BMPixel
194***4370@qq.com
列表反轉函數:
#!/user/bin/python# -*- coding: UTF-8 -*-def reverse(li): for i in range(0, len(li)/2): temp = li[i] li[i] = li[-i-1] li[-i-1] = templ = [1, 2, 3, 4, 5]reverse(l)print(l)
在python3中報錯Error Message: ‘float’ object cannot be interpreted as an integer,而在python2中運行正常;
問題解決
為什麼range內的資料是float呢 。
懷疑/在py2跟py3之間有差別,搜了一下,的確是有差別。請看下面的用法:
pyhon2
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。
解決辦法:將float類型強轉化為int類型就可以了