【问题标题】:For loop only iterates once within function [duplicate]For循环仅在函数内迭代一次[重复]
【发布时间】:2023-01-30 18:50:20
【问题描述】:

我将不胜感激一些帮助或解释。代码当前返回 1。我希望下面的代码返回 3,只需计算列表中可被 10 整除的数字。似乎 for 循环只迭代一次。我怎样才能让这段代码再次迭代?谢谢你。下面的代码。

def divisible_by_ten(num):
counter = 0
for i in num:
    if i % 10 == 0:
        counter += 1
        return counter
print(divisible_by_ten([20, 25, 30, 35, 40]))

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您将在一个循环后返回计数器变量。一旦你返回函数就会停止。

    第二件事代码也需要正确缩进

    您可以通过在循环结束时返回计数器来正确实现它,如下所示:

    def divisible_by_ten(num):
        counter = 0
        for i in num:
            if i % 10 == 0:
                counter += 1
        return counter
    print(divisible_by_ten([20, 25, 30, 35, 40]))
    

    【讨论】:

    • 只是为了好玩(并展示 Python 的强大功能)一个单行解决方案:return sum(1 for i in num if not i % 10)
    【解决方案2】:

    这会起作用。 return 关键字在错误的地方。因此它将在循环遍历列表中的所有元素之前返回/停止。

    def divisible_by_ten(num):
          counter = 0
          for i in num:
            if i % 10 == 0:
                counter += 1
          return counter
        print(divisible_by_ten([20, 25, 30, 35, 40]))
    

    【讨论】: