Python 我过不了这关;非类型';我的泡泡运动中的错误 def bubble_排序(列表): 大小=长度(列表) 对于范围内的i(尺寸): 索引=列表[i] 对于范围内的j(尺寸-1,i,-1): 如果alist[j]

Python 我过不了这关;非类型';我的泡泡运动中的错误 def bubble_排序(列表): 大小=长度(列表) 对于范围内的i(尺寸): 索引=列表[i] 对于范围内的j(尺寸-1,i,-1): 如果alist[j],python,recursion,bubble-sort,Python,Recursion,Bubble Sort,您正在将来自bubble\u sort()的结果分配给T,但该函数没有显式返回任何内容,因此它返回默认值None: if L[0] <= T[0]: TypeError: 'NoneType' object is not subscriptable 因此,当需要执行此行时,您正在索引T,这是None-并且None不可下标: T = bubble_sort(L) 这里也是: return L[0] + T 在这里: return T[0

您正在将来自
bubble\u sort()
的结果分配给
T
,但该函数没有显式返回任何内容,因此它返回默认值
None

    if L[0] <= T[0]:

TypeError: 'NoneType' object is not subscriptable
因此,当需要执行此行时,您正在索引
T
,这是
None
-并且
None
不可下标:

T = bubble_sort(L)
这里也是:

            return L[0] + T
在这里:

        return T[0] + Q

您正在添加两个整数,这将生成一个整数,但随后将其传递给
bubble\u sort()
,它需要一个列表。

您没有从函数
bubble\u sort
返回任何内容,你现在知道答案了,但是下次调试的策略是:
NoneType是不可下标的
在那行代码上意味着
L
是无的,或者
T
是无的。没有其他原因会导致这个错误。因此,在
if
测试之前打印出这两个值,看看哪个值是无的,然后向后查看代码,看看为什么设置不正确。添加到您的答案之后,行
return L[0]+T
return T[0]+Q
将导致错误,因为您正在向列表中添加整数。
            return L[0] + T
        return T[0] + Q
            P = L[0] + T[-1]
            Q = bubble_sort(P)