2013-10-19 155 views
-2

我需要編寫一個函數,它以數字列表作爲參數,並返回列表中最大的數字,而不使用max()Python:函數返回列表中最高值沒有max()?

我已經試過:

def highestNumber(l): 
    myMax = 0 
    if myMax < l: 
    return myMax 

    return l 


print highestNumber ([77,48,19,17,93,90]) 

...這我不記得一些其他的東西。我只需要了解如何遍歷列表中的元素。

+2

問對外部資源(如教程)是專門題外話這裏。 –

+0

@ rio5029:http://learnpythonthehardway.org –

+0

順便說一句,你到底是怎麼想出這個代碼的?我看不出任何邏輯。我的意思是...... Python幾乎像英語一樣......如果你大聲讀出你的代碼,你不覺得它完全沒有意義嗎? –

回答

4
def highestNumber(l): 
    myMax = l[0] 
    for num in l: 
     if myMax < num: 
      myMax = num 
    return myMax 


print highestNumber ([77,48,19,17,93,90]) 

輸出

93 

或者你可以做這樣的事情

def highestNumber(l): 
    return sorted(l)[-1] 

或者

def highestNumber(l): 
    l.sort() 
    return l[-1] 
1

您需要遍歷所有值以確定最大值;跟蹤最大至今和返回完成後循環:

def highestNumber(l): 
    myMax = float('-inf') 
    for i in l: 
     if i > myMax: 
      myMax = i 
    return myMax 

這裏,float('-inf')是保證低於任何其他數目,使其成爲一個偉大的起點的數字。

for構造負責所有的循環;您直接在l的元素上執行該操作,則將i中的每個元素逐個分配給該元素。

您的代碼忘記循環,對照0測試整個列表,並在測試失敗時返回整個列表。

0
for item in my_list: 
    print item 

這下幾乎所有的鏈接覆蓋,當你鍵入「蟒蛇循環」到谷歌你

0

功能查找列表中的最大不使用預定義功能

def max_len_list(temp): 
    i=1 
    for each in temp: 
     while i < max_len: 
      comp=each; 
      if comp > temp[i]: 
       i=i+1; 
      elif temp[i] > comp: 
       comp=temp[i]; 
       i=i+1 
     return comp 
list1 = []; 
max_len=3; 
try: 
    while len(list1) < max_len : 
     no = int(input("enter a number\n")); 
     list1.append(no); 
except: 
    print "enter number not string" 
max_no=max_len_list(list1); 
print max_no 
+0

我會建議一些事情。這是一個古老的問題,如果你有答案,它的確值得跟進 - 謝謝。我建議添加代碼格式到您的答案。在表單上方有一個wysiwyg,或者你可以使用markdown http://stackoverflow.com/editing-help – LessQuesar

+0

在這種情況下,我不同意@LessQuesar。新答案只有在添加了所有其他答案中未提及的內容時纔有用。低質量問題的新答案已經有了幾個答案 - 這些答案都沒有價值。 –