用python打印最大和最小的数字

时间:2019-06-01 13:05:15

标签: python

我正在尝试编写一个程序,反复提示用户输入整数,直到用户输入“完成”为止。输入“完成”后,打印出最大和最小的数字。如果用户输入的数字不是有效数字,请用try / except捕获它,然后发出适当的消息并忽略该数字。

我在打印最大和最小数字时遇到问题。通过以下方法打印不正确的数字:

largest = None
smallest = None
list1 = []
while True:
    num = input("Enter a number: ")
    if num == "done" : break
    try:
        val = int(num)
        if int(num):
            list1.append(num)
    except:
        print("Invalid input") 
print("Maximum is " + max(list1))
print("Minimum is " + min(list1))

我输入的数字分别是7、2,bob,10和4。

其打印输出为: 输入无效 最大值为7 最小为10

我正在寻找的输出是: 输入无效 最大值为10 最小为2

3 个答案:

答案 0 :(得分:1)

不使用列表,您需要两个值来跟踪用户输入的最大值和最小值。当用户输入“完成”以外的非数字输入时,请使用try和except处理情况。

比使用列表存储值,对数据进行排序然后获得最终结果更快,更好的方法

import sys

min_val = sys.maxsize
max_val = -sys.maxsize-1

flag = True
while flag:
    user_input = input()
    if user_input == 'done':
        flag = False
    else:
        try:
            user_input = int(user_input)
            if user_input>max_val:
                max_val = user_input
            if user_input<min_val:
                min_val = user_input
        except ValueError:
            print('Enter a Valid Number')



print('Maximum Value is {}'.format(max_val))
print('Minimum value is {}'.format(min_val))

答案 1 :(得分:0)

您必须在列表中附加int,而不是str

更改此:

if int(num):
    list1.append(num)

执行以下操作之一:(if int(num)是不必要的。)

list1.append(int(num))

list1.append(val)

在连接print语句之前,还必须转换为字符串:

print("Maximum is " + str(max(list1)))
print("Minimum is " + str(min(list1)))

进行修改后,您的程序应如下所示:

largest = None
smallest = None
list1 = []
while True:
    num = input("Enter a number: ")
    if num == "done" : break
    try:
        val = int(num)
        list1.append(val)
    except ValueError:         # it is always better to specify what type of error you are expecting to catch
        print("Invalid input") 
print("Maximum is " + str(max(list1)))
print("Minimum is " + str(min(list1)))

答案 2 :(得分:0)

您将num转换为一个int并将其存储在val中,但是随后您忽略了它,并将原始num插入了列表中。由于它是一个字符串,因此Python将按字母顺序对最小值进行排序,因此“ 10”小于“ 2”。

要解决此问题,您只需在列表中插入val

    val = int(num)
    if val:
        list1.append(val)