Search code examples
pythonloopsfor-loop

For Loops in Python (Output Smallest Input)


Okay so I am practicing for loops in Python and I was wondering how could I make a user input 10 intergers then it would output the smallest one. I would know how to do this with a while loop for example:

Smallest = 0
count = 0
while count < 10:
    Number = int(input("Enter a number >> "))
    if Number < Smallest:
        Smallest = Number
    count = count + 1

print("{0} is the biggest value you have entered".format(Smallest))

But how do I do it in a for loop format? Here's what I have so far:

for i in range(10):
    Number = int(input("Enter a Number >> "))
    if Number < Smallest:
        Smallest = Number

print("{0} is the smallest value you have entered.".format(Smallest))

Solution

  • What you have there, other than the fact you should initialise Smallest, is equivalent to the solution using your while statement.

    So, assuming the while variant is considered correct, the for variant you have will suffice.

    The reason I qualify it is because initialising Smallest to zero is actually the wrong thing to do. If your ten numbers are all greater than twenty (for example), Smallest will remain at zero, giving you the wrong answer.

    One way to fix this (in both variants) is to change your if statement to:

    if i == 0 or Number < Smallest:
    

    which will set Smallest first time through the loop regardless (though it should be count in the while variant since that's using a different loop control variable).


    Of course, as you learn more and more about the language, you'll come across the concept of things that are more "Pythonic" than others. An example of this is the rather more succinct:

    Smallest = min(int(input("Enter a Number >> ")) for i in range(10))
    

    which removes the need totally for an explicit check-and-replace strategy (that's still done, but under the covers of the min function).