freeCodeCamp/guide/english/python/while-loop-statements/index.md

3.8 KiB

title
While Loop Statements

While Loop Statements

Python utilizes the while loop similarly to other popular languages. The while loop evaluates a condition then executes a block of code if the condition is true. The block of code executes repeatedly until the condition becomes false.

The basic syntax is:

counter = 0
while counter < 10:
   # Execute the block of code here as long as counter is less than 10
   # To prevent an infinite loop, counter is incremented by 1 on each iteration
   counter += 1

An example is shown below:

days = 0    
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
while days < 7:
   print("Today is " + week[days])
   days += 1

Output:

Today is Monday
Today is Tuesday
Today is Wednesday
Today is Thursday
Today is Friday
Today is Saturday
Today is Sunday

Line-by-Line Explanation of the above code:

  1. The variable 'days' is set to a value 0.
  2. A variable week is assigned to a list containing all the days of the week.
  3. While loop starts and keeps running until the condition returns 'true'.
  4. The condition is 'days < 7', which rougly says run the while loop until the variable 'days' is equal to 7.
  5. When days = 7, the while loop stops executing.
  6. The days variable gets updated on every iteration.
  7. When the while loop runs for the first time, the line 'Today is Monday' is printed onto the console and the variable days becomes equal to 1.
  8. Since the variable days is equal to 1, which is less than 7, the while loop is executed again.
  9. It repeats until the console prints 'Today is Sunday', the variable days is now equal to 7 and the while loop stops executing.

Infinite Loops:

As previously noted, a while loop will run until the conditional logic is false. Because of this, it is important to set a "false" condition within the executable code. If no false is included, the while loop will run infinitely. Use caution when setting logic parameters to prevent the infinite loop unless that is the desired output.

A simple example of this would be as follows:

Let's say we wish to print out the first N natural numbers on the screen.

N = int(input('Enter a number: '))
i = 1
while i <= N:
   print(i)

If we try running this code, we'll encounter an infinite loop. That's because we skipped an important task in our code. Can you guess what? We forgot to update the value of i after each iteration, which means that i never exceeds the value of N.

Note: If you find yourself in an infinite loop and can't figure out how to end the nightmare, don't worry. Just hit ctrl+c on your keyboard.

Now let's fix our program with a simple line.

N = int(input('Enter a number: '))
i = 1
while i <= N:
   print(i)
   i += 1            # This is the same as typing i = i + 1

And it's done. In the first iteration, i = 1 and it's printed on the screen. Then, i is incremented by 1 and in the second iteration, i = 2 which is again printed on screen. This continues until i = N + 1 (depending on what N is) and we finally exit the loop.

Note: Because while loops are conditioned controlled loops, they are great for programs that need to be run for an indefinite number of times. This allows for input to be taken time and time again until the condition is met. A good practical example would be for a game in which the player has the option to try again. Until the player responds with the response that meets the while loop condition, the player can continue to play the game, simulating the loop as many times as they please.

More Information: