Search code examples
pythonloopsconditional-statementsminimum

Getting the minimum value from user input in a while loop


I am writing a Python program that continuously asks a user for a number from 1 to 100, then once the user inputs the number 0, the program print out the smallest number and largest number provided, as well as the average of all the numbers.

My only problem: I keep getting 0 as the smallest value of the input when I want to exclude 0.

I have already tried doing the following:

count = 0
total = 0
number = 1
smallest = 0
largest = 0

while number != 0:
    number = int(input("Please input a value from 1 to 100: "))
    
    if number < 0 or number > 100:
        print("Why you give me value outside of range :(\n")
        count -= 1
        continue
   
    count += 1
    total = total + number
    
    if number > largest:
        largest = number

if number == 0:
    count -= 1
    average = total / count
    if number < smallest:
        smallest = number
    print("The results are: ")
    print('Smallest: {}'.format(smallest))
    print('Largest: {}'.format(largest))
    print('Average: {}'.format(average))
    print("\nThank you!")

Solution

  • You need to track both the largest and the smallest as the numbers are being input.

    Also I have checked for the out of range numbers before any processing takes place:

    count = 0
    total = 0
    number = 0
    smallest = 101  # starts bigger than any input number
    largest = 0     # starts smaller than any input number
    
    while True:
        number = int(input("Please input a value from 1 to 100: "))
        if number == 0:
            break
        
        if number < 0 or number > 100:
            print("Why you give me value outside of range :(\n")
            continue
       
        count += 1
        total = total + number
        
        if number > largest:
            largest = number
    
        if number < smallest:
            smallest = number
    
    if number == 0:
        average = total / count
        print("The results are: ")
        print('Smallest: {}'.format(smallest))
        print('Largest: {}'.format(largest))
        print('Average: {}'.format(average))
        print("\nThank you!")