“NoneType”对象没有属性getitem和python布尔值

2024-09-30 20:17:31 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:我通过编辑有问题的行来绕过问题,如下所示:

if ( type(x) == int or ( type(x)==list and type(x[0]) == int ) ) and not ( type(y) == int or (type(y)==list and type(y[0])  == int) ):

因此,在我的代码中,我尝试将矩阵、整数或列表浮点表示的组合相乘(例如[5,9]=5/9)。但我得到了上面提到的错误。在

我的逻辑是,如果X(或Y)不是矩阵,那么它要么是一个整数,要么是一个[a,b]类列表,这意味着它的第一个元素也是一个整数,而在矩阵中它是[[a,b],[c,d]],这意味着X的第一个元素也是一个列表。在

代码如下:

^{pr2}$

我得到了这条线的错误:

if ( type(X) == int or type(X[0]) == int ) and not ( type(Y) == int or type(Y[0]) == int )

但可能我也会把它用于其他情况。 我对这个问题的看法是,当X可能不是一个列表时,我可能会调用X[0],但如果是这样,并且X是整数,python不会检查另一个情况,因为它会在“type(X)==int”处停止。在

这就是我所说的matmul,我应该以前缀的方式得到矩阵运算

if lst[0]=="+":
    return reduce(matsum,lst[1:])
elif lst[0]=="-":
    return matsub(lst[1],lst[2])
elif lst[0]=="*":
    return reduce(matmult,lst[1:])

完全回溯:

Traceback (most recent call last):
  File "mateval.py", line 161, in <module>
    print mateval(["+",["*",["-",1,[1,3]],[[2,[-1,2]],[[7,3],525]],[[7,3],[1,5],-9,23]]]],[[2,3,-1],[[1,2],[1,3],-1]]])
  File "mateval.py", line 150, in mateval
    lst[i] = mateval(lst[i])
  File "mateval.py", line 157, in mateval
    return reduce(matmult,lst[1:])
  File "mateval.py", line 108, in matmult
    if ( type(x) == int or type(x[0]) == int ) and not ( type(y[0])  == int ):
TypeError: 'NoneType' object has no attribute '__getitem__'

Tags: orandinpy列表returniftype
1条回答
网友
1楼 · 发布于 2024-09-30 20:17:31

您发布的代码与回溯中显示的代码不同。但是,我怀疑matmul以某种方式返回了None,这导致了异常。也许,你忘了一个return语句吗?在

注意,multit可能是罪魁祸首。在

相关问题 更多 >