【发布时间】:2020-06-19 02:52:30
【问题描述】:
def sel(unsort,current):
if len(unsort) == 0:
return current
temp = unsort[0]
for i in range(len(unsort)):
if unsort[i]<temp:
temp = unsort[i];
unsort.remove(temp)
current = current + [temp];
sel(unsort,current)
上面会定义一个函数选择排序。
a = [4,3,2,1];
print(sel(a, []))
当我在 python 上运行程序时,它会打印“无”。该函数应将current 作为列表返回。我在这里做错了什么?
【问题讨论】:
-
请正确缩进和格式化您的代码。
sel(unsort,current);行缩进错误,它不能出现在函数sel()中。此外,Python 不使用分号。而且它不使用不必要的括号,所以if len(unsort) == 0:,没有括号。 -
@smci 论坛上有关于如何正确缩进的说明吗?似乎当我将代码放在帖子中时,它不会像我在 python 上那样缩进。我看到分号没有用作终止符。谢谢。
-
另外(显然),正如@JonathonReinhart 指出的那样,您的函数永远不会返回任何内容。 fn 的最后一行通常是 return 语句。否则,您对
unsortarg 的本地副本所做的任何本地更改都会在 fn 结束时消失,即 fn 的结果被丢弃,而不是您想要的。见How do I pass a variable by reference?
标签: python