首页 > 解决方案 > 返回终止 for 循环

问题描述

我正在尝试定义一个以下函数,该函数应该返回两个给定数字之间的所有奇数,但是 return 终止了 for 循环,因此只返回第一个数字。我该如何克服呢?

def oddNumbers(l,r):
L=[]
for i in range (l,r+1):
    L.append(i)
for i in range (len(L)):
    if L[i] % 2 !=0:
        return(L[i])
    else:
        continue

标签: python-3.x

解决方案


如果generators对你来说太难了,你可以试试这个。

代码:

def odd_numbers(l,r):
    ans = []
    for i in range (l,r+1):
        if i % 2 == 1:
            ans.append(i)
    return ans

print(odd_numbers(1,10))

结果:

[1, 3, 5, 7, 9]

通过使用更pythonic来做到这一点list comprehension

代码:

def odd_numbers_list_comprehension(l,r):
    return [i for i in range (l,r+1) if i % 2 == 1]

print(odd_numbers_list_comprehension(1,10))

结果:

[1, 3, 5, 7, 9]

推荐阅读