4. while loop

4.1. Syntax

  • Continue execution when argument is True

4.1.1. Generic syntax

Listing 4.2. 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. else

  • else will execute, if break was not used to exit the loop

abort = False
countdown = 10

while countdown >= 0:
    if abort:
        break

    print(f'Launch in T-{countdown}')
    i -= 1
else:
    print('There was no abort this time')
    print('Launch rocket')

4.5. Assignments

4.5.1. Report card

  • Filename: loop_report_card.py

  • Lines of code to write: 15 lines

  • Estimated time of completion: 10 min

  1. Do zmiennej zapisz skalę ocen (2, 3, 3.5, 4, 4.5, 5)

  2. Za pomocą pętli while przekonwertuj skalę na zmienną typu List[float]

  3. Użytkownik podaje oceny jako int lub float, nie będzie próbował podawać niepoprawnych typów, np. str albo float z przecinkiem zamiast kropki

  4. Jeżeli wciśnięto sam Enter, zakończ wpisywanie do dzienniczka

  5. Jeżeli ocena na liście dopuszczalnych ocen:

    • Jest: dodaj ją do dzienniczka

    • Nie ma: wyświetl informację “Grade is not allowed” i dalej kontynuuj wpisywanie

  6. Na zakończenie wyświetl wyliczoną dla dzienniczka średnią arytmetyczną z ocen

The whys and wherefores
  • Wczytywanie ciągu znaków od użytkownika

  • Generowanie struktur danych i konwersja typów

  • Weryfikacja ciągu wprowadzonego od użytkownika

  • Korzystanie z pętli oraz instrukcji wychodzących

  • Konwersja typów i rzutowanie

  • Sprawdzanie czy obiekt jest instancją klasy

  • Wykorzystanie funkcji wbudowanych

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