Python自定义排序函数输出None 无法返回预期有序列表原因排查
排序函数返回None问题修复
你的代码存在3处错误导致无法得到预期排序结果:
- 元素交换逻辑错误:交换相邻元素时,你在给
number[x]赋新值后,错误地将临时变量temp重新赋值为number[x+1],没有把临时变量存储的原number[x]值赋值给number[x+1],交换操作未生效。 - 返回语句位置错误:
return被写在内层判断分支中,第一次触发元素比较交换就会直接终止函数执行,排序逻辑根本没有跑完。 - 返回值缺失:
return后没有携带任何返回值,Python中无返回值的函数默认返回None,这就是你打印结果为None的直接原因。
修正后可正常运行的代码
def sort(number): for i in range(len(number)-1, 0, -1): for x in range(i): if number[x] > number[x+1]: # 修正交换逻辑 temp = number[x] number[x] = number[x+1] number[x+1] = temp # 排序全部完成后返回结果列表 return number number = [1,4,2,6,9,3,7,8,11,10] sortednum = sort(number) print(sortednum)
运行上述代码将输出正确排序结果:[1, 2, 3, 4, 6, 7, 8, 9, 10, 11]
内容的提问来源于stack exchange,提问作者lakefromchromecart
相关产品推荐
相关产品推荐

