7.1. Loop while

7.1.1. Syntax

  • Continue execution when argument is True

  • Stops if argument is False

Listing 85. while loop generic syntax
while <CONDITION>:
    ...

7.1.2. Use Cases

7.1.2.1. Never ending loop

Listing 86. Never ending loop
while True:
    print('hello')

7.1.2.2. Stop conditions

Listing 87. Stop conditions
i = 0

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

# 0
# 1
# 2

7.1.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

Listing 88. Iterating over sequence
i = 0
data = ['a', 'b', 'c']

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

# 'a'
# 'b'
# 'c'

7.1.2.4. Exit flag

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

Listing 89. Exit flag
i = 10
abort = False

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

    if i == 6:
        print('Abort, Abort, Abort!')
        abort = True

# 10
# 9
# 8
# 7
# Abort, Abort, Abort!

7.1.3. break and continue

7.1.3.1. Skipping iterations

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

Listing 90. Skipping iterations using continue keyword
i = 0

while i < 10:
    print(i, end=', ')
    i += 1

    if i % 3:
        continue
    else:
        print(end='\n')

# 0, 1, 2,
# 3, 4, 5,
# 6, 7, 8,
# 9,

7.1.3.2. Exiting the loop

Listing 91. Exiting the loop using break keyword
while True:
    number = input('Type number: ')

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

7.1.4. Assignments

7.1.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 sekcja input)

  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
  • input(...)

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