2011-09-16 332 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]