Pętla for – powtarzanie bez przepisywania
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Chcesz wypisać liczby od 1 do 100. Bez pętli to sto linii kodu, od 1 do 1000 – tysiąc. Pętla for wykonuje ten sam fragment wiele razy, za każdym razem podstawiając inną wartość. Sto powtórzeń to dwie linie.
Pętla plus warunek to komplet – mając te dwie rzeczy, można napisać już praktycznie każdy program.
Po tej lekcji:
- napiszesz pętlę wypisującą liczby w zadanym zakresie,
- powiesz z pamięci, co daje
range(5), - napiszesz pętlę idącą w dół,
- zsumujesz wartości w pętli, tworząc zmienną przed nią.
Budowa pętli for
for i in range(3):
print("Obrot", i)
print(i * 10)
print("Koniec")
Elementy są znajome: tak jak przy if, na końcu linii stoi dwukropek, a powtarzane polecenia są wcięte o cztery spacje.
ito zmienna sterująca. Python sam wstawia do niej kolejne wartości.- Nazwa
ijest umowna – możesz nazwać ją inaczej, ale to powszechny zwyczaj. - Zmiennej możesz normalnie używać wewnątrz pętli.
- Linie bez wcięcia po pętli wykonają się dopiero po jej zakończeniu, i tylko raz.
range – najważniejsza pułapka w Pythonie
range(5) daje 0, 1, 2, 3, 4. Nie od 1 do 5. Zaczyna od zera, a górna granica jest wyłączna – nigdy nie zostanie osiągnięta.
range(5)– pięć liczb, od 0 do 4,range(1, 6)– od 1 do 5, czyli tak, jak zwykle chcesz,range(10, 0, -1)– od 10 w dół do 1; trzeci argument to krok,range(0, 21, 2)– co druga liczba od 0 do 20.
Gdy nie jesteś pewien, co pętla przejdzie, wypisz to: print(list(range(1, 6))) pokaże pełną listę wartości.
Sumowanie i liczenie w pętli
To schemat, który wraca bardzo często: przed pętlą tworzysz zmienną i nadajesz jej wartość początkową, wewnątrz pętli ją zmieniasz, po pętli wypisujesz wynik.
suma = 0
for i in range(1, 11):
suma += i
print(suma) # 55
ile_parzystych = 0
for i in range(1, 21):
if i % 2 == 0:
ile_parzystych += 1
print(ile_parzystych) # 10
- Suma zaczyna się od zera i rośnie o kolejne wartości.
- Licznik zaczyna się od zera i rośnie o jeden przy każdym trafieniu.
- Iloczyn zaczyna się od jedynki, nie od zera – mnożenie przez zero zawsze dałoby zero.
Zmienną trzeba utworzyć przed pętlą. Utworzona w środku byłaby zerowana przy każdym obrocie.
Pętla po tekście
for potrafi przejść nie tylko po liczbach z range, ale też po znakach tekstu:
for znak in "Python":
print(znak)
Spróbuj sam
W kodzie z lekcji są dwie funkcje: zle_suma i dobra_suma. Uruchom program i porównaj wyniki – pierwsza zeruje sumę przy każdym obrocie pętli, dlatego daje zły wynik. Spróbuj ją naprawić.
Zadania z lekcji:
- Wypisz liczby od 1 do 20, każdą w osobnej linii.
- Wypisz liczby od 20 do 1, w kolejności malejącej, jedną pętlą.
- Wypisz tabliczkę mnożenia przez 7 w formacie
7 x 3 = 21, dla mnożników od 1 do 10. Użyj f-stringa. - Policz sumę wszystkich liczb parzystych od 1 do 100 i wypisz wynik.
- Dla szybszych: wypisz liczby od 1 do 30, przy każdej dopisując, czy jest parzysta, czy nieparzysta.
Sprawdź się
- Napiszę pętlę wypisującą liczby w zadanym zakresie.
- Powiem z pamięci, co daje
range(5). - Napiszę pętlę idącą w dół.
- Zsumuję wartości w pętli, tworząc zmienną przed nią.
Na następnej lekcji: pętla while – ta, która powtarza nie ustaloną z góry liczbę razy, tylko dopóki coś jest prawdą.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.