A loop is programming statement that cause a statement or set of statements to execute repeatedly. Most loops should have condition logic built into them that causes the loop to end. A loop that does not end is known as an "infinite loop". Looping statements are also sometimes referred to as repetition or iteration statements.
The two main types of loops are:
- Count-controlled loop, i.e. definite loop
- Repeats instructions a specific number of times
- Often performed with a for loop
- Condition-controlled loop, i.e. indefinite loop
- Repeats instructions while a condition is true
- Often performed with a while loop, do-while loop, or do-until loop
Python has both for and while loop.
Another way loops can be categorized is as a pre-test loop or post-test loop. Python only has pre-test loops, i.e. it doe snot have a do ... while loop.
Three important things are needed for a while loop to be coded and run properly. You will see this in these examples. They are:
- A counter: this is used to count how many times the loop has run. In this first example, "i" is the variable being used as the counter.
- A test condition: this is used to determine if the loop will run again. The condition must be true in order for the loop to run again. In this first example. "i < (less than) x) is the condition. So, if the user enters 5 as user input which gets stored in the variable x, then 1 is less than 5 and thus the code in the loop will run. Also note, with Python the code in the loop must be indented. This is a good things as it enforced good programming practice by making the code much more readable.
- Lastly, there must be a incrementer. i += 1 is the incrementer. It adds 1 to the variable i. So, after the loop has run once, i becomes 2 and the program returns back to the while (i <= x): test condition.
Python While Loops: Count-Controlled Examples
Example: Count-controlled While loop
i = 1
x = int(input("How high do you want to count to? "))
while (i <= x):
print (i)
i += 1
Output:
How high do you want to count to? 3
1
2
3
Example: Count-controlled While True loop with incrementing and break
i = 1
x = int(input("How high do you want to count to? "))
while (i <= x):
print (i)
i += 1
if i > 10:
print("Sorry, we only allow you to count to 10. The End.")
break
Output:
How high do you want to count to? 3
1
2
3
4
5
6
7
8
9
10
Sorry, we only allow you to count to 10. The End.
Example: While loop incrementing by more than 1 in Python
counter = 1
max = 20
while counter <= max:
print ("Counter =", counter)
counter += 4
Output:
Counter = 1
Counter = 5
Counter = 9
Counter = 13
Counter = 17
Example: While loop with decrement in Python
x = 5
while x >= 0:
print(x)
x-=1
Output:
5
4
3
2
1
0
Example: While loop in a User-defined function
Loops can also be placed into a user-defined function.
def counterLoop(x):
while x >= 0:
print(x)
x-=1
x = 5
counterLoop(x)
Output:
5
4
3
2
1
0
Example: While Loop in Main that Call a Function x times
def counterLoop(x):
total = x * 10
print("Total: ", total)
# Main Program
i = 1
x = int(input("Please enter a number: "))
while i <= x:
counterLoop(i)
i+=1
Output:
Please enter a number: 3
Total: 10
Total: 20
Total: 30
Example: While loop in Python - Incrementor vs. accumulator
i=0
total=0
while i < 5:
i = i + 1
total = total + i
print("Count: ", i, "Total: ", total)
Output:
Count: 1 Total: 1
Count: 2 Total: 3
Count: 3 Total: 6
Count: 4 Total: 10
Count: 5 Total: 15
Example: Nested loops and If statement in Python
i = 1
max = 3
while (i <= max):
i = i +1
print (i,"squared =", i*i)
for x in range(2,3):
result = x/i
print (x, "/", i, "= %.2f" % result)
if (result < 1):
print ("Result is less than 1.")
else:
print ("Result is greater than or equal to 1.")
Output:
2 squared = 4
2 / 2 = 1.00
Result is greater than or equal to 1.
3 squared = 9
2 / 3 = 0.67
Result is less than 1.
4 squared = 16
2 / 4 = 0.50
Result is less than 1.
Example: While loop with sentinal value in Python
A sentinel value is a special value that signals when a loop should end. Therefore, this value should be a value that could not otherwise be valid input .
while True:
weight = float(input("How much do you weight (-1 to quit)? "))
if weight == -1:
break
height = float(input("How tall are you in inches? "))
bmi = 703 * (weight / (height * height))
print ("Your BMI is: %.2f" % bmi)
Output:
How much do you weight (-1 to quit)? 155
How tall are you in inches? 70
Your BMI is: 22.24
How much do you weight (-1 to quit)? 180
How tall are you in inches? 72
Your BMI is: 24.41
How much do you weight (-1 to quit)? -1
Example: Nested loops and If statement in Python
i = 1
max = 3
while (i <= max):
i = i +1
print (i,"squared =", i*i)
for x in range(2,3):
result = x/i
print (x, "/", i, "= %.2f" % result)
if (result < 1):
print ("Result is less than 1.")
else:
print ("Result is greater than or equal to 1.")
Output:
2 squared = 4
2 / 2 = 1.00
Result is greater than or equal to 1.
3 squared = 9
2 / 3 = 0.67
Result is less than 1.
4 squared = 16
2 / 4 = 0.50
Result is less than 1.
Example: While True loop with nested while loop for input validation
while True:
number = int(input("Please enter even number that is divisible by 7: "))
while (number % 7) != 0:
number = int(input("Number must be divisible by 7. Please re-enter: "))
print("Congratulations,", number, "divisible by 7")
break
Output:
Please enter even number that is divisible by 7: 1 {user input}
Number must be divisible by 7. Please re-enter: 14 {user input}
Congratulations, 14 divisible by 7
Example: Alternate Method of Performing Previous Program
number = int(input("Please enter even number that is divisible by 7: "))
while (number % 7) != 0:
number = int(input("Number must be divisible by 7. Please re-enter: "))
print("Congratulations,", number, "divisible by 7")