4. while loop

4.1. Syntax

  • Continue execution when argument is True

4.1.1. Generic syntax

Listing 5. while loop generic syntax
while CONDITION:
    ...

4.2. Example

4.2.1. Never ending loop

while True:
    print('hello')

4.2.2. Stop conditions

i = 0

while i <= 3:
    print(i)
    i += 1

# 0
# 1
# 2

4.2.3. Iterating over sequence

  • Better idea for this is to use for loop

  • for loop supports Iterators

  • len() must write all numbers to memory, to calculate its length

i = 0
numbers = [1, 2, 3]

while i <= len(numbers):
    current = numbers[i]
    print(current)
    i += 1

# 1
# 2
# 3

4.2.4. Exit flag

  • Exit flag pattern is useful if you have for example multi-threaded application

i = 0
abort = False

while not abort:
    print(i)
    i += 1

    if i % 3 == 0:
        print('Aborting!')
        abort = True

# 0
# 1
# 2
# Aborting!

4.3. break and continue

4.3.1. Skipping iterations

  • if continue is encountered, it will jump to next loop iteration

i = 0

while i <= 10:
    i += 1

    if i % 2 == 0:
        continue

    print(i)

# 1
# 3
# 5

4.3.2. Exiting the loop

while True:
    number = input('Type number: ')

    # if user hit enter, without typing number
    if not number:
        break

4.4. Assignments

4.4.1. Report card

English
  1. For given grade scale in input data (see below)

  2. Convert scale to List[float] using while loop

  3. Ask user about grade, one at a time

  4. User will type only valid int or float

  5. If grade is on a new grade scale - add it to report card

  6. If grade is not on a new grade scale - print "Grade is not allowed" and continue input

  7. If user pressed Enter key, end inserting data

  8. At the end, print calculated mean

  9. Test case when report list is empty

Polish
  1. Dla skali ocen w danych wejściowych (patrz poniżej)

  2. Przekonwertuj skalę do List[float] używając pętli while

  3. Poproś użytkownika o ocenę, jedną na raz

  4. Użytkownik poda tylko poprawne int lub float

  5. Jeżeli ocena jest na nowej skali - dodaj ją do dzienniczka

  6. Jeżeli oceny nie ma na liście - wyświetl "Grade is not allowed" i kontynuuj wpisywanie

  7. Jeżeli użytkownik wcisnął Enter, zakończ wprowadzanie danych

  8. Na zakończenie wyświetl wyliczoną dla dzienniczka średnią arytmetyczną

  9. Przetestuj przypadek, gdy dzienniczek jest pusty

Input
INPUT = (2, 3, 3.5, 4, 4.5, 5)
The whys and wherefores
  • Reading user input

  • Input validation

  • Type casting

  • Sequences

  • Using while loop

  • Breaking loop

  • Using built-in functions

Hints
  • mean = sum(...) / len(...)