【问题标题】:Why I can't return function value? Return gives "none"? [duplicate]为什么我不能返回函数值?返回给出“无”? [复制]
【发布时间】: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 语句。否则,您对 unsort arg 的本地副本所做的任何本地更改都会在 fn 结束时消失,即 fn 的结果被丢弃,而不是您想要的。见How do I pass a variable by reference?

标签: python


【解决方案1】:

当你递归调用sel 时,你会忽略返回值。

改成return:

    return sel(unsort, current)

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多