A python while loop is a control statement that allows code to be executed repeatedly based on a given expression(Boolean). While loop in Python could be tricky for beginners.

In this post:

  • Python while loop
  • Stop/break while loop in Python
  • Python iterate list elements with while
    • try except - managing errors in while loop
  • Python while loop with multiple conditions
    • logical and vs or
    • 1 is considered as True, 0 as False
  • Python while loop read file
    • Python while loop find a line in file

Python while loop

The while loop can be used for repeating of a code if a special condition is True. For example you can iterate over the natural numbers from 3 to 7 by while loop:

num = 3
while (num < 7):
    print ('iteration:', num)
    num = num + 1

result:

iteration: 3
iteration: 4
iteration: 5
iteration: 6

Stop/break while loop in Python

Sometimes you will need to stop the loop by exception. This can be done with keyword break:

num = 3
while (num < 7):
    print ('iteration:', num)
    num = num + 1
    if num == 5:
        break

result:

iteration: 3
iteration: 4

Python iterate list elements with while

You can use while loop to iterate all items of a list in Python. Depending on your data and types the optimal way of iterating collection will be different:

mylist = ['item1', 'item2', 'item3']
i = 0
while i < len(mylist):
    print(mylist[i])
    i += 1

result:

item1
item2
item3  

managing errors in while loop

If you use this code:

mylist = ['item1', 'item2', 'item3']
while mylist[num]:
    num += 1
    print(mylist[num])

You will get error:

IndexError: list index out of range

The easiest way to manage errors like this one is using try except:

mylist = ['item1', 'item2', 'item3']
try:
    while mylist[num]:
        num += 1
        print(mylist[num])
except IndexError:
    pass

the result is:

item2
item3

Python while loop with multiple conditions

Sometimes you may need to use more than one condition in while loop for python. In this case you can use:

  • logical - and
  • logical - or
num = 1
flag = True
while (num < 10) and flag:
    print('The num is:', num)
    num = num + 1
    if num % 3 == 0:
        flag = False

result:

The num is: 1
The num is: 2  

Another example returning the modular division as flag.

num = 1
flag = True
while (num < 10) and flag:
    print('The num is:', num)
    num = num + 1
    flag = num % 3

result:

The num is: 1
The num is: 2

These examples contain three interesting points:

  • two conditional expressions - only if both of them are true than the loop body is entered

  • 1 - if you use digit 1 (or get it as result) then your loop is consider this as True. While 0 is considered as False and this will break the loop.

  • logical or vs and - if you use or instead of and then you will get different result(because only one of the expressions should be True):

    The num is: 1
    The num is: 2
    ...
    The num is: 8
    The num is: 9

Python while loop read file

If you want to read a file line by line in Python the best is to use for loop. But if you still want to use while you can do it by this code example:

f=open('C:\\user\\test.txt',"r",encoding="utf-8" )
while True:
    line = f.readline()
    print(line.replace('\n', ''))
    if line == '':
        break

result:

line1
line2
line3

Python while loop find a line in file

You can search for a specific line with while conditional statement:

f=open('/home/user/test.txt', "r",encoding="utf-8" )
flag = True
while flag:
    line = f.readline().replace('\n', '')
    if '3' in line:
        print(line)
        flag = False

result:

line3

You can check for exact match of a line with:

if line == 'line2':
    print(line)
    flag = False