繁体   English   中英

为什么我的程序没有给出正确答案(在列表中查找第二大) - 在 python

[英]why my program doesn't give the correct answer ( to find second largest in a list) - in python

def calc_largest(arr):  
    second_largest = arr[0]  
    largest_val = arr[0]  
    for i in range(len(arr)):  
        if arr[i] > largest_val:  
            largest_val = arr[i]  
  
    for i in range(len(arr)):  
        if arr[i] > second_largest and arr[i] != largest_val:  
            second_largest = arr[i]  
  
        return second_largest

print(calc_largest([20, 30, 40, 25, 10])) # this outputs correct answer

a=[]
n=int(input("Number of elements in array:"))
for i in range(0,n):
    l=int(input("Enter the element"))
    a.append(l)
print(a)# list is printed properly
print(calc_largest(a))# Always prints the first input entered by me 

这是您的印痕的问题。 您的返回发生在第一次迭代后的 for 循环中。 把它移出来。 请注意,您也可以通过 second_largest = sorted(arr)[-2] 获得它

你可以这样做。

def calc_largest(arr):
    return sorted(arr)[-2]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM