首页 > 解决方案 > 在数组中查找第二大项未按预期工作

问题描述

我的查找第二小的数字的程序按预期工作,但是在运行代码以查找第二大的数字时,第二大的输出不正确。我以类似的方式完成了第二个功能,但翻转了大于号。修复代码的最佳方法是什么?

def second_smallest():
    num_list = [1,5,6,44,5,7,2,444,3]
    smallest_num = num_list[0]
    second_smallest_num = num_list[1]
    for i in num_list:
        if i < smallest_num:
            smallest_num = i
        elif smallest_num < i < second_smallest_num:
            second_smallest_num = i
    print("Smallest Number:", smallest_num)
    print("Second smallest number:", second_smallest_num)

def second_largest():
    num_list = [1,5,6,44,5,7,2,444,3]
    largest_num = num_list[0]
    second_largest_num = num_list[1]
    for i in num_list:
        if i > largest_num:
            largest_num = i
        elif second_largest_num < i < largest_num:
            second_largest_num = i
    print("Largest:", largest_num)
    print("Second largest:", second_largest_num)

标签: pythonarraysmax

解决方案


当您分配新的最高号码时,您需要将第二高的号码分配给旧的最高号码。

def second_smallest():
     num_list = [1,5,6,44,5,7,2,444,3]
     smallest_num = num_list[0]
     second_smallest_num = num_list[1]
     for i in num_list:
         if i < smallest_num:
            smallest_num = i
         elif smallest_num < i < second_smallest_num:
         second_smallest_num = i
     print("Smallest Number:", smallest_num)
     print("Second smallest number:", second_smallest_num)

    def second_largest():
    num_list = [1,5,6,44,5,7,2,444,3]
    largest_num = num_list[0]
    second_largest_num = num_list[1]
    for i in num_list:
        if i > largest_num:
            second_largest_num = largest_num
            largest_num = i
        elif second_largest_num < i < largest_num:
            second_largest_num = i
    print("Largest:", largest_num)
    print("Second largest:", second_largest_num)

    second_smallest()
    second_largest()

推荐阅读