2013-10-19 156 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。新答案只有在添加了所有其他答案中未提及的内容时才有用。低质量问题的新答案已经有了几个答案 - 这些答案都没有价值。 –