6. while loop

6.1. Syntax

  • Continue execution when argument is True

6.1.1. Generic syntax

Code Listing 6.1. while loop generic syntax
while CONDITION:
    ...

6.2. Example

6.2.1. Never ending loop

while True:
    print('hello')

6.2.2. Stop conditions

i = 0

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

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

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

# 1
# 2
# 3

6.2.3. Exit flag

i = 0
exit_flag = False

while not exit_flag:
    if i % 2 == 0:
        exit_flag = True

    print(i)
    i += 1

# 0

6.2.4. else

6.3. break and continue

6.3.1. Skipping iterations

i = 0

while i <= 10:
    i += 1

    if i % 2 == 0:
        continue

    print(i)

# 1
# 3
# 5

6.3.2. Exiting the loop

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

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

6.4. Assignments

6.4.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(...)