【问题标题】:How do return statements work within a function? Can I use multiple return statements?return 语句如何在函数中工作?我可以使用多个返回语句吗?
【发布时间】:2019-10-25 21:37:56
【问题描述】:

以下代码返回“True”。

check = [1,2,4,6]

def is_consecutive(a_list):
    """Checks to see if the numbers in a list are consecutive"""
    total = 2
    while total > 1:
        test = a_list.pop(0)
        if test == a_list[0] - 1:
            total = len(a_list)
            return True
        else:
            return False
            break

works = is_consecutive(check)
print(works)

我找到了一个解决方案,通过在 while 循环之后将 return True 移动到一个新块:

check = [1,2,4,6]

def is_consecutive(a_list):
    """Checks to see if the numbers in a list are consecutive"""
    total = 2
    while total > 1:
        test = a_list.pop(0)
        if test == a_list[0] - 1:
            total = len(a_list)
        else:
            return False
            break
    return True

works = is_consecutive(check2)
print(works)

我不完全理解为什么将这段代码移到 while 循环之外可以正常工作。在我看来,一旦你告诉一个函数返回 True,以后就不能在函数中更改它了。对吗?

【问题讨论】:

  • 一旦函数返回,它就会退出,并且该函数中的任何代码都不会运行,直到再次调用该函数。为什么第一个代码不起作用,您能看到while 循环会循环的任何方式吗?有没有不以回报告终的案件?然后就第二段代码问自己同样的问题。
  • return 表示很好的回报,你将你的函数计算的答案返回给调用它的函数。

标签: python python-3.x list


【解决方案1】:

Return 语句停止执行该特定函数。是的,您可以使用多个 return 语句,但只能在条件块内使用。因为当调用 return 语句时,它将停止执行该函数,因此在 return 语句之后将无法继续执行行/块。

【讨论】:

    【解决方案2】:

    是的,当您执行return True 时,您将从此“退出”该函数,即不会执行该函数中的任何其他内容。通过将return True 移到while 循环之外并移到函数末尾,可以确保如果列表是连续的,则函数永远不会返回False,因此必须返回True

    【讨论】:

      【解决方案3】:

      这是因为在新代码中,您试图找到一个条件,您将获得列表中的数字是不连续的。如果找到任何数字,则立即返回 false。

      一旦遍历列表,没有找到连续的数字,则认为列表是连续的数字,因此返回True。

      【讨论】:

        猜你喜欢
        • 2013-07-31
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 2016-06-12
        • 2010-11-24
        • 1970-01-01
        • 2021-02-06
        • 2022-12-09
        相关资源
        最近更新 更多