第二大数字

时间:2017-03-11 02:37:03

标签: python loops while-loop

如何编写一个程序,将无限数量的数字作为输入并输出下一个 用户输入数字后想要的屏幕最大数量 退出。

用户与程序交互的示例如下所示:

Please enter a positive number (type -1 to exit): 99
Please enter a positive number (type -1 to exit): 66
Please enter a positive number (type -1 to exit): 5
Please enter a positive number (type -1 to exit): 23
Please enter a positive number (type -1 to exit): 46
Please enter a positive number (type -1 to exit): 326
Please enter a positive number (type -1 to exit): 661
Please enter a positive number (type -1 to exit): -3
The second largest number entered is: 661

1 个答案:

答案 0 :(得分:1)

这是Python2.x的一个示例,如果您使用的是Python3,请尝试使用input而不是raw_input。我的方法是将输入作为字符串并使用try/catch将其转换为整数,然后将它们存储到列表中。

您可以使用max方法获取最大值并将其删除,以便下次使用max时,您将获得第二大数字。

input_list=[]
while True:
    string=raw_input("Please enter a positive number (type -1 to exit)")
    try:
        num=int(string.strip())
        if num!=-1:
            input_list.append(num)
        else:
            largest=max(input_list)
            input_list.remove(largest)
            print "The largest value is {0}".format(largest)
            sec_largest=max(input_list)
            input_list.remove(sec_largest)
            print "The second largest value is {0}".format(sec_largest)
            break
    except Exception as e:
        print "can not convert string to int"

如果列表不是很大,你也可以对列表进行排序,否则可能需要一些时间,然后弹出最大的数字。

另一种方法是,如果你只想要第二大数字,你可以将输入与最后一个输入数字进行比较,它将占用更少的内存。

希望这有帮助。