2017-03-29 65 views
0

我必須在列表中打印第一個負數,但如果沒有負數,我必須將其作爲0返回。我不能爲我的生活弄清楚這一點,我感到非常愚蠢。如果列表中沒有負數,Python如何打印0?

def find_negative(list_numbers): 
    for list_number in list_numbers: 
     if list_number < 0: 
      return list_number 

目前它的工作原理是如果有負數,但如果沒有,它什麼也不會返回。我似乎無法做到這一點,所以它返回0而不是任何東西

+0

只是添加一個'else'子句,所以當它等於或大於0時,它也會做一些事情.. –

回答

0

for循環之外添加return 0。只有在程序沒有找到任何負數的情況下,程序纔會到達那裏。

def find_negative(list_numbers): 
    for list_number in list_numbers: 
     if list_number < 0: 
      return list_number 
    return 0 
0

試試這個:

def find_negative(list_numbers): 
    first_index = 0 
    for list_number in list_numbers: 
     if list_number < 0: 
      first_index = list_number 
      break 
    return first_index 
+0

哈哈,你是冠軍 – DynoPotamus

+0

謝謝。儘管@ Miriam的答案可能更加優雅,儘管我們的答案看起來很相似。 – DanielY

1

您可以使用此一班輪:

num = next((x for x in numbers if x < 0), 0) 

有一個小包裝PyPI上提供first()功能,這可能是更方便:

from first import first  
num = first(numbers, key=lambda x: x < 0, default=0) 
0

如果你這樣做的話,你的代碼工作正常,返回列表中的第一個負數,但是如果條件不滿足,沒有提到任何其他事情要做,即沒有負數。 所以你可以使用另一個變量,它最初可以爲零,如果有負數,它將變爲與list_number相等,只有在列表中沒有負數時才變爲零。

DEF find_negative(list_numbers): 總數= 0 爲list_number在list_numbers: 如果list_number < 0: 總數= list_number 斷裂 返回數

在上面的代碼中,循環將中斷,一旦它遇到一個負數,並返回該數字的索引,如果它沒有遇到一個負數,它將返回一個零。