python 常见错误及调试方法(2)

来源:互联网 发布:百度一下淘宝男裤 编辑:程序博客网 时间:2024/05/19 14:00

1、'float ’ object can't be interpreted as an integer'

例:for i in range(int(c / 10)):

改为:for i in range(c // 10):

注:‘/’ 表示除法; '//'表示整除

2、‘'int' object does not support item assignment’

例:array[i][j] = i * j

改为:array = [x * j for i in range(y)]

3、<generator object <genexpr> at 0x1006aocbo>

原因:产生的结果过于庞大

4、‘‘dict’ object has no attribution 'has_key'’

原因:版本原因

例:if dict.has_key('id')

改为:if id in dict:

5、list indices must be: integers or slices, not str

例:for i in A:   A是某个常量

改为:for i in range(A)

6、'process_file( ) take 1 positional argument but 2 were given'

例:dict = process_file('outfile_path','r')

解决办法:将‘r’去掉,因为只需要1个参数

7、local variable 'a' referenced before assignment:

原因:局部变量a在赋值前已经引用

8、dict.keys( ):以列表的形式返回一个字典所有的键

      dict.get(n):返回指点的键的值  -----等价于dict[key]

9、读.csv文件时,不要在该模块上注释,否则会出错

10、'syntaxError: invalid syntax'

例:class0 = matrixdata[matrixdata['class.label'] = 0]

改为:class0 = matrixdata[matrixdata['class.label'] == 0]

11、‘ufunc 'substract' did not contain a loop with signature matching types dtype('<u5') ’

例:changematrix0 = np.array(returnmatrix0)

改为:changematrix0 = np.array(returnmatrix0,dtype = float)

12、Vstack( ) take 1 position argument but 2 were given

例:np.row_stack(a,b)

改为:np.row_stack(a,b) -----别忘了括号

13、cv2.error:C:\projects\opencv-python\opencv\modkes\core\src\matrix.cpp:949:error:(-215)dims <= 2 && step[0] >0 in function:cv:mat::locateROI

原因:可能是导入的图片名称少了字母或者名称不匹配

例:img = cv2.imread('bean.jpg',0)

原图片的名称是:beans.jpg

改为:mg = cv2.imread('beans.jpg',0)

14、'ascii' code can't decode byte 0xes in position 0:ordinal not in range(128)

原因:不能出现中文,

例:titles = ['Image','Filter2D','中值滤波']

列表中出现了中值滤波,不能编码,所以报错!