Search code examples
python-3.xuser-inputtry-exceptinvalidoperationexception

How to show invalid input


My task is:

Write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch it with a try/except and put out an appropriate message and ignore the number. Enter 7, 2, bob, 10, and 4 and match the output below.

I want to ignore any invalid integer and print 'Invalid Output' message after calculating the maximum and minimum number.But it always prints the invalid message right after user input. How am i supposed to solve this? Thanks in advance.

Code:

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

Solution

  • You could store that invalid output as a boolean variable

    largest = None
    smallest = None
    is_invalid=False
    while True:
        num = input("Enter a number: ")
        if num == "done":
            break
        try:
            n = int(num)
        except:
            is_invalid=True
        if largest is None:
            largest=n
        elif n>largest:
            largest=n
        elif smallest is None:
            smallest=n
        elif n<smallest:
            smallest=n
    print("Maximum", largest)
    print('Minimum', smallest)
    if is_invalid:
        print('Invalid Input')