首页 > 解决方案 > 问题包括异常处理以及查找最大和最小编号。这是coursera平台的作业问题

问题描述

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

输入:

7 ,2 , bob, 10, 4, done.

期望的输出:

Invalid input
Maximum is 10
Minimum is 2

实际输出:

Invalid input
Invalid input
Maximum is 10
Minimum is 2

代码:

largest=-1
smallest=None
while True:
    num =input("Enter a number: ")
    try:
        if num == "done" :
            break
        elif smallest is None:
            smallest=int(num)
        elif int(num)<smallest:
            smallest=int(num)
        elif int(num)>largest:
            largest=int(num)    
        else:
            raise ValueError()
    except ValueError:
        print("Invalid input")
print("Maximum is",largest) 
print("Minimum is",smallest)

标签: python

解决方案


我认为有一种更 Pythonic 的方式来做到这一点。尝试这个:

inputList = []
while True:
    num = input("Enter a number:")
    try:
        num = int(num)
        inputList.append(num)
    except:
        if num == "done":
            break
        else:
            print ("Invalid input. Ignoring...")
print ("Maximum is:",max(inputList))
print ("Minimum is:",min(inputList))

编辑:此代码适用于 Python3。对于 Python2,您可能希望使用raw_input()而不是input()


推荐阅读