Co się stanie, gdy w pętli z licznikiem zapomnicie linijki i = i + 1?
Do czego służy słowo break?
Część 1 · Po co druga pętla
Ten sam wynik, o trzy linijki krócej
Lekcja 07, pętla while:
i = 1
while i <= 5:
print(i)
i = i + 1
Dziś, pętla for:
for i in range(1, 6):
print(i)
Oba wypisują:
1
2
3
4
5
W while sami zakładamy licznik, sami go zwiększamy i sami pilnujemy warunku. W for robi to zakres: pętla dostaje gotową listę wartości i po prostu przechodzi po nich po kolei.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 225 (dodatek 7, pętla for i pętla while) · docs.python.org, The Python Tutorial, rozdz. 4.2 (for Statements)
Część 1 · range(n)
range(5): pięć liczb, ale od zera
range (po angielsku „zakres”) podaje pętli kolejne liczby. Zapis range(5) to pięć liczb licząc od zera: ostatnia podana liczba już do zakresu nie wchodzi.
docs.python.org, The Python Tutorial, rozdz. 4.3 (The range() Function)
Część 2 · range(a, b, krok)
Własny początek i własny skok
W nawiasie mogą stać trzy liczby: od czego zacząć, przed czym się zatrzymać i o ile skakać. Krok to różnica między kolejnymi liczbami; gdy jest ujemny, zakres idzie w dół.
Zapis
Liczby w zakresie
Ile powtórzeń
range(3)
0, 1, 2
3
range(5, 10)
5, 6, 7, 8, 9
5
range(1, 11)
1, 2, 3, … , 10
10
range(0, 10, 3)
0, 3, 6, 9
4
range(10, 0, -1)
10, 9, 8, … , 1
10
W praktyce:range nie tworzy listy liczb w pamięci, tylko podaje je pojedynczo. Dlatego samo range(10) wypisuje się jako range(0, 10), a pętla po miliardzie liczb nie zajmuje ani grama więcej pamięci niż pętla po dziesięciu.
docs.python.org, The Python Tutorial, rozdz. 4.3 (The range() Function)
Część 2 · Suma od 1 do n
Pętla, która zbiera wynik
# suma liczb od 1 do 100
total = 0
for i in range(1, 101):
total = total + i
print("Suma wynosi:", total)
Na ekranie: Suma wynosi: 5050
Zmienna total to worek na wynik. Zaczyna od zera, a każdy obieg pętli dokłada do niej kolejną liczbę.
Obieg
i
total po dodaniu
1.
1
1
2.
2
3
3.
3
6
100.
100
5050
docs.python.org, The Python Tutorial, rozdz. 4.3 (The range() Function) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 225 (dodatek 7, pętla for po zakresie)
Część 3 · Tabliczka mnożenia
Dziesięć linijek z dwóch linijek kodu
number = 7
for i in range(1, 11):
print(number, "*", i, "=", number * i)
Pętla wykonuje się dziesięć razy, bo range(1, 11) to liczby od 1 do 10. Za każdym razem print dostaje inną wartość i.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 225 (dodatek 7, pętla for z zakresem, przykład wypisania liczb od 1 do 10)
Część 3 · Wybór pętli
Kiedy for, a kiedy while?
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 225 (dodatek 7: while stosuje się, gdy nie znamy dokładnej liczby powtórzeń) i s. 100 (program Zbiór jabłek)
Ćwiczenie · przy komputerze · 12 minut
Ćwiczenie: trzy pętle do napisania
Załóż plik petle.py i rozwiąż trzy zadania. Po każdym uruchom program i sprawdź, czy wypisuje dokładnie to, co ma wypisać.
Wypisz liczby od 1 do 20, każdą w osobnej linii. Potem zmień jedną liczbę w range tak, żeby program wypisał tylko liczby nieparzyste: 1, 3, 5, … , 19.
Policz sumę liczb od 1 do 50 i wypisz ją jednym print na końcu. Ile wyszło?
Zrób odliczanie: program wypisuje 10, 9, 8, … , 1, a na końcu słowo „Start!”. Uwaga: print("Start!") ma być poza pętlą.
Jak sprawdzić, czy pętla ma dobrą liczbę obiegów
Policz linijki, które program wypisał. Zadanie 1 to 20 linijek, po zmianie 10. Zadanie 3 to 10 linijek plus jedna ze słowem „Start!”. Gdy wychodzi o jedną za mało albo za dużo, popraw drugą liczbę w range: ona do zakresu nie wchodzi.
Sprawdzenie
Trzy pytania na koniec
Ile razy wykona się pętla for i in range(4) i jakie wartości przyjmie i?
Czym różni się range(6) od range(1, 6)?
Kiedy wybieracie for, a kiedy while?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
for i in range(n)
Sklep wypisuje 24 produkty na stronie: jeden obieg pętli to jeden kafelek z ceną
codziennie
range(a, b)
Numery stron pod listą wyników: strony od 1 do liczby stron, bez zera i bez jednej za dużo
codziennie
range(a, b, krok)
Godziny wizyt co 15 minut w kalendarzu rezerwacji: krok zamiast wypisywania każdej godziny ręcznie
codziennie
Suma w pętli
Podsumowanie koszyka i faktury: program przechodzi po pozycjach i dokłada każdą do sumy