TypeError:运行排序函数时,无法解压缩不可迭代的NoneType对象



我正试图为3个输入创建一个简单的排序函数,并且在所有输入都是唯一的情况下,我成功地做到了这一点。

然而,当3个输入中的2个相同时,更具体地说,当第2个和第3个输入相同时,我会遇到问题。我收到以下问题:TypeError: cannot unpack non-iterable NoneType object

这意味着什么?如何解决?

def simple_sort_version2(a,b,c):
if a > b and a > c:
if b > c:
return c,b,a
elif c > b:
return b,c,a
elif b > a and b > c:
if a > c:
return c,a,b
elif c > a:
return a,c,b
elif c > a and c > b:
if a > b:
return b,a,c
elif b > a:
return a,b,c
elif a == b:
if a > c:
return c,a,b
elif c > a:
return a,b,c
elif a == c:
if a > b:
return b,a,c
elif b > a:
return a,c,b
elif b == c:
if b > a:
return a,b,c
elif a > b:
return b,c,a
a,b,c = simple_sort_version2(10,20,30)
print (a,b,c) # 10 20 30
a,b,c = simple_sort_version2(10,30,20)
print (a,b,c) # 10 20 30
a,b,c = simple_sort_version2(30,20,10)
print (a,b,c) # 10 20 30
a,b,c = simple_sort_version2(30,20,20)
print (a,b,c) # 20 20 30
>>>print(simple_sort_version2(30,20,20))
None

由于a>ba>c您的代码进入第一个if-statement然后它返回None,因为不存在b==c的情况。

注意:

如果没有返回语句,python默认返回None

代码无法进入最后一个elif-statement,因为它已经进入第一个if-statement

最新更新