2011-09-16 212 views
0

我想这个函数来工作:Python:我做错了什么?

def getEvenNumbers (numbers): 

    bo = [] 
    for num in numbers: 
     bo.append(num) 
     if num % 2 == 0: 
      return bo 

getEvenNumbers([1, 4, 8, 9])回报[4]虽然。

我希望更多的结果,如[4,8]但它不工作,我只得到[4]?我究竟做错了什么?

+0

重复[Python的:在函数返回列表结果问题(http://stackoverflow.com/questions/7439513/python-return-list-result-problem你在不久之前就问过这个问题。请仔细阅读答案,我的演示文稿就是如何做到的 - 积累到列表中,然后在完成时返回。 – agf

+0

是... agf ...我跟着那一步...更多的理由甚至对什么做错了感到困惑 –

+0

@agf这是怎么回事? – NullUserException

回答

8

一旦发现其中一个数字是偶数,您就返回。

def get_even_numbers(numbers): 
    bo = [] 
    for num in numbers: 
     if num % 2 == 0: 
      bo.append(num) 
    return bo 

或者:

def get_even_numbers(l): 
    return [n for n in l if n % 2 == 0] 
+0

@Jeff IDK,这很奇怪。 – NullUserException

+0

好吧,我只是试图达到底部。它发生在我身上之前,并认为这是我做的。 –

+0

谢谢NullUser ...我无法相信它只是返回函数的位置......非常感谢你 –

1

试试这个:

def getEvenNumbers (numbers): 

    bo = [] 
    for num in numbers: 
     if num % 2 == 0: 
      bo.append(num) 
    return bo 
2

其实你的代码,目前给出的将返回[1,4],而不是[4]。您的函数当前只是将数字附加到列表中,直到找到第一个数字,然后返回。

你想要的东西,如:

def getEvenNumbers(numbers): 
    return [n for n in numbers if not n % 2]