我正试图为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>b
和a>c
您的代码进入第一个if-statement
然后它返回None
,因为不存在b==c
的情况。
注意:
如果没有返回语句,python默认返回
None
代码无法进入最后一个
elif-statement
,因为它已经进入第一个if-statement