PYTHON – PĘTLE
Szkoła podstawowa
- Przykłady i zadania – str. 1
- Rozwiązania zadań – str. 3
Liceum i technikum
- Przykłady i zadania – str. 2
- Rozwiązania zadań – str. 3
Poziom 1. Szkoła podstawowa
Wstęp
Wyobraź sobie, że próbujesz zalogować się do programu. Wpisujesz hasło, ale pojawia się komunikat: „Wprowadzone hasło jest błędne. Spróbuj ponownie”. Wpisujesz hasło drugi raz – znowu błędnie, więc program ponownie wyświetla ten sam komunikat. Taka sytuacja może powtarzać się wiele razy, aż użytkownik wprowadzi poprawne hasło. Czy należałoby więc zapisać tę samą instrukcję kilkanaście razy? Oczywiście, że nie. W takich sytuacjach stosujemy pętle.
Pętla to fragment programu, który pozwala wykonywać te same instrukcje wielokrotnie. Mogą one zostać powtórzone określoną liczbę razy albo wykonywać się tak długo, dopóki spełniony jest określony warunek. Pętle spotykamy w programowaniu bardzo często. Możemy wykorzystać je na przykład do:
- wyświetlenia liczb od 1 do 100,
- wykonania tego samego działania dla wielu liczb,
- przejrzenia wszystkich elementów listy,
- wielokrotnego pytania użytkownika o hasło,
- powtarzania ruchów postaci w grze.
Dzięki pętlom program staje się krótszy, czytelniejszy i łatwiejszy do napisania. Jak dokładnie działają pętle? Najlepiej zobaczyć to na przykładach. Przejdźmy więc do pierwszego z nich.
Przykłady
Przykład 1. Pętla for – wyświetlanie kolejnych liczb
Wyświetl liczby całkowite od 1 do 10.
for liczba in range(1, 11):
print(liczba)
Pętla for pozwala wielokrotnie wykonać tę samą instrukcję. W tym przykładzie zmienna liczba przyjmuje kolejno wartości 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, a dla każdej z nich wykonywana jest instrukcja print(liczba). Program wyświetli więc liczby od 1 do 10. W zapisie range(1, 11) pierwsza liczba określa wartość początkową, a druga wyznacza granicę, której pętla nie obejmuje. Dlatego liczba 11 nie zostanie wyświetlona. Możemy zapamiętać, że range(1, 11) oznacza liczby od 1 do 10.
Przykład 2. Pętla for – liczby parzyste
Wyświetl liczby parzyste z przedziału ⟨2, 10⟩.
for liczba in range(2, 11, 2):
print(liczba)
W tym przykładzie zapis range(2, 11, 2) zawiera trzy wartości. Pierwsza określa wartość początkową, druga wyznacza granicę, której pętla nie obejmuje, a trzecia to krok, czyli wartość, o jaką zmienia się kolejna liczba. Zmienna liczba przyjmuje więc kolejno wartości 2, 4, 6, 8, 10. Program wyświetli wszystkie liczby parzyste od 2 do 10. Możemy zapamiętać zapis range(początek, koniec, krok). W tym przykładzie oznacza on: zacznij od 2, zatrzymaj się przed 11 i zwiększaj wartość o 2.
Przykład 3. Pętla for – odliczanie w dół
Wyświetl liczby całkowite od 100 do 50 w porządku malejącym.
for liczba in range(100, 49, -1):
print(liczba)
Tym razem chcemy wyświetlać liczby od największej do najmniejszej, dlatego jako krok podajemy -1. W zapisie range(100, 49, -1) liczba 100 oznacza wartość początkową, 49 wyznacza granicę, której pętla nie obejmuje, a -1 określa krok. Zmienna liczba przyjmuje więc kolejno wartości 100, 99, 98, 97, …, 52, 51, 50. Liczba 49 nie zostanie wyświetlona.
Warto zapamiętać: dodatni krok zwiększa kolejne wartości, a ujemny krok je zmniejsza.
Przykład 4. Pętla while – wyświetlanie kolejnych liczb
Wyświetl liczby całkowite od 1 do 20.
liczba = 1
while liczba <= 20:
print(liczba)
liczba += 1
Na początku zmiennej liczba przypisujemy wartość 1. Pętla while działa tak długo, jak długo warunek liczba <= 20 jest spełniony. W każdej iteracji program wyświetla aktualną wartość zmiennej, a następnie zwiększa ją o 1. Zmienna przyjmuje więc kolejno wartości 1, 2, 3, 4, …, 19, 20. Gdy osiągnie wartość 21, warunek przestaje być spełniony i pętla kończy działanie.
Warto zapamiętać, że pętla while wykonuje się tak długo, jak długo jej warunek jest spełniony. Trzeba też pamiętać o zmianie wartości zmiennej wewnątrz pętli. Bez instrukcji liczba += 1 zmienna cały czas miałaby wartość 1, warunek liczba <= 20 pozostawałby spełniony i pętla wykonywałaby się bez końca.
Przykład 5. Pętla while – odliczanie w dół
Wyświetl liczby całkowite od 100 do 50 w porządku malejącym.
liczba = 100
while liczba >= 50:
print(liczba)
liczba -= 1
Na początku zmiennej liczba przypisujemy wartość 100. Pętla while działa tak długo, jak długo warunek liczba >= 50 jest spełniony. W każdej kolejnej iteracji program wyświetla aktualną wartość zmiennej, a następnie zmniejsza ją o 1. Zmienna przyjmuje więc kolejno wartości 100, 99, 98, 97, …, 52, 51, 50. Po wyświetleniu liczby 50 jej wartość zostaje zmniejszona do 49. Warunek przestaje wtedy być spełniony i pętla kończy działanie. Warto zapamiętać: liczba -= 1 oznacza zmniejszenie wartości zmiennej liczba o 1.
Zadania praktyczne
Zadanie 1
Napisz program, który za pomocą pętli for wyświetli:
a) liczby całkowite od 1 do 20,
b) liczby całkowite od 100 do 50 w porządku malejącym,
c) kolejne wielokrotności liczby 5 od 5 do 100, czyli: 5, 10, 15, 20, 25, 30, …, 90, 95, 100.
Zadanie 2
Rozwiąż ponownie zadanie 1, tym razem używając pętli while.
Zadanie 3
Napisz program, który pobierze od użytkownika dwie liczby całkowite x i y (przyjmij, że x ≤ y), wyświetli w jednym wierszu wszystkie liczby całkowite od x do y włącznie, a następnie obliczy i wyświetli ich sumę.
= = = = =
Podaj x: 2
Podaj y: 5
2 3 4 5
Suma = 14
Zadanie 4
Napisz program wykorzystujący pętlę while, który pobierze od użytkownika dodatnią liczbę całkowitą k, a następnie wyświetli liczby całkowite od 10 do 40 włącznie, które są podzielne przez k.
= = = = =
Podaj k: 6
Liczby podzielne: 12 18 24 30 36
Zadanie 5
Napisz program, który pobierze od użytkownika nieujemną liczbę całkowitą n, a następnie wyświetli liczby od n do 0 włącznie, w porządku malejącym. Następnie zmodyfikuj program tak, aby wyświetlał tylko liczby parzyste z tego zakresu.
Zadanie 6
Napisz program, który prosi użytkownika o podanie liczby całkowitej. Jeśli podana liczba jest mniejsza lub równa 0, program ponawia pytanie. Kończy działanie, gdy użytkownik poda liczbę dodatnią.
= = = = =
Podaj liczbę: -5
Podaj liczbę: 0
Podaj liczbę: -3
Podaj liczbę: 10
Zadanie 7
Napisz program, który wyświetli pierwszych n potęg liczby 2, zaczynając od 2¹. Wartość n podaje użytkownik. Musi to być liczba naturalna większa od 0.
= = = = =
Podaj n: 4
2, 4, 8, 16
Zadanie 8
Napisz program, który pobierze od użytkownika liczbę naturalną n większą od 0, a następnie n liczb całkowitych. Program ma obliczyć i wyświetlić ich sumę.
= = = = =
Podaj n: 4
Podaj liczbę: 1
Podaj liczbę: 5
Podaj liczbę: 3
Podaj liczbę: 10
Suma = 19
Podsumowanie
W tej lekcji poznaliśmy pętle, które pozwalają wielokrotnie wykonywać te same instrukcje. Dowiedzieliśmy się, że pętla for przydaje się wtedy, gdy znamy liczbę powtórzeń lub zakres wartości, a pętla while wykonuje się tak długo, jak długo określony warunek jest spełniony.
Nauczyliśmy się:
- wyświetlać liczby rosnąco i malejąco;
- korzystać z funkcji range(), określając początek, koniec i krok;
- powtarzać instrukcje za pomocą pętli for i while;
- sumować liczby i obliczać kolejne potęgi;
- pobierać od użytkownika wiele wartości;
- ponawiać pytanie, dopóki użytkownik nie poda poprawnej liczby.
Pamiętaj, że w pętli while trzeba zmieniać wartość, od której zależy warunek. W przeciwnym razie pętla może wykonywać się bez końca.