Data: 16.07.2021

Python pętle
Spis treści
- Python pętle
- Rodzaje pętli w Pythonie
- Pętla while
- Pętla while z instrukcją else
- Pętla for
- Użycie pętli for z obiektem typu lista
- Użycie pętli for z obiektem typu krotka (tuple)
- Użycie pętli for z obiektem typu tekst (string)
- Użycie pętli for z obiektem typu słownik (dictionary)
- Użycie pętli for z funkcją range()
- Instrukcja break
- Instrukcja continue
- Pętle zagnieżdżone
- Pętle nieskończone
Pętle w programowaniu to sekwencje instrukcji, które są powtarzane.
Pętla może być powtarzana:
- aż do osiągnięcia przez program określonego warunku np. program może prosić użytkownika o podanie hasła wyświetlając napis „Podaj hasło”. Napis będzie wyświetlany dotąd, aż użytkownik poda odpowiednie hasło.
- określoną ilość razy np. program może wyświetlić 3 razy napis „Uwaga”
Rodzaje pętli w Pythonie
Python obsługuje dwa rodzaje pętli:
- pętla while
- pętla for
Pętla while
Pętla while służy do wielokrotnego wykonywania bloku instrukcji dotąd, aż warunek zostanie spełniony. Gdy sprawdzany w pętli warunek staje się fałszywy (zostanie spełniony), wykonywana jest linia kodu występująca bezpośrednio po pętli.
Przykład 1
W przykładzie:
- do zmiennej o nazwie „cyfra” przypisujemy wartość 1
- tworzymy pętlę while, w której przy każdym obrocie do zmiennej „cyfra” dodajemy jedynkę. Przy każdym obrocie pętli aktualna cyfra zostanie zwiększona o 1, a gdy osiągnie wartość równą 6, pętla przestanie się wykonywać
- za pomocą funkcji print() znajdującej się w pętli, po każdym obrocie pętli wyświetlamy aktualny wynik
- bezpośrednio po pętli podana jest druga funkcja print(), za pomocą której wyświetlamy napis „Podaj inną cyfrę”. Funkcja wyświetlająca napis „Podaj inną cyfrę” uruchomi się od razu jak warunek sprawdzany w pętli while stanie się fałszywy.
cyfra = 1while cyfra < 6: print('Bieżąca cyfra wynosi:', cyfra) cyfra = cyfra + 1print('Podaj inną cyfrę')
wynik:Bieżąca cyfra wynosi: 1Bieżąca cyfra wynosi: 2Bieżąca cyfra wynosi: 3Bieżąca cyfra wynosi: 4Bieżąca cyfra wynosi: 5Podaj inną cyfręPoniżej opis poszczególnych fragmentów podanego w przykładzie kodu:

Blok while możemy umieścić w jednym wierszu rozdzielając składowe średnikami:
Przykład 2
cyfra = 1while cyfra < 6: print('Bieżąca cyfra wynosi:', cyfra); cyfra = cyfra + 1Pętla while z instrukcją else
Za blokiem kodu zawierającym pętlę możemy użyć instrukcji „else”. Jeśli jej użyjemy, w momencie gdy warunek w pętli while staje się fałszywy wykonywana jest klauzula znajdująca się w instrukcji „else”. Wykona się ona zawsze jeśli z pętli nie wyskoczymy przez break lub return.
Przykład 3
W poniższym przykładzie, przy każdym obrocie pętli za pomocą funkcji print() drukowany jest napis „Bieżąca cyfra wynosi:” i podawana jest wartość cyfry zwiększona w pętli o 1. W momencie gdy cyfra osiągnie wartość 6, warunek zawarty w pętli, że ma być ona mniejsza od 6, staje się fałszywy. Program zaczyna wykonywać instrukcję „else” i za pomocą funkcji print() drukuje napis „Cyfra równa się” oraz podaje wartość 6. Dopiero po wykonaniu instrukcji „else” wykonuje się instrukcja znajdująca się poza pętlą i za pomocą kolejnej funkcji print() drukowany jest napis „Podaj inną cyfrę”.
cyfra = 1while cyfra < 6: print('Bieżąca cyfra wynosi:', cyfra) cyfra = cyfra + 1else: print('Cyfra równa się', cyfra)print('Podaj inną cyfrę')
wynik:Bieżąca cyfra wynosi: 1Bieżąca cyfra wynosi: 2Bieżąca cyfra wynosi: 3Bieżąca cyfra wynosi: 4Bieżąca cyfra wynosi: 5Cyfra równa się 6Podaj inną cyfręPętla for
Pętla for służy w Pythonie do iteracji po sekwencji (np. lista, krotka tuple, łańcuch string) lub innych iterowalnych obiektach. Iteracja to powtarzanie tej samej operacji w pętli określoną liczbę razy lub aż do momentu, gdy spełniony zostanie określony warunek.
Za pomocą pętli for możemy wykonać daną instrukcje określoną liczbę razy.
Użycie pętli for z obiektem typu lista
Przykład 4
W przykładzie:
- do zmiennej o nazwie „owoce” przypisujemy listę owoców
- używamy pętli for do iteracji po liście „owoce”
- tworzymy zmienną o nazwie „owoc” w pętli. Pętla przechodzi po liście owoców zawartych w zmiennej „owoce”. Za każdym obrotem uruchamia funkcję print(), za pomocą której drukuje stały napis „Uczeń zjadł:” i przypisuje do tego napisu jeden owoc.
owoce = ["jabłko", "gruszkę", "banany"]for owoc in owoce: print("Uczeń zjadł:", owoc)
wynik:Uczeń zjadł: jabłkoUczeń zjadł: gruszkęUczeń zjadł: bananyPrzykład 5
W przykładzie:
- do zmiennej Suma_sprzedaży przypisujemy wartość zero
- do zmiennej Sprzedaż przypisujemy listę z wartościami sprzedaży
- w pętli for do zmiennej Suma_sprzedaży dodajemy wartości znajdujące się na liście.
Suma_sprzedaży = 0for Sprzedaż in [100.50, 200.00, 300.00]: Suma_sprzedaży += Sprzedaż print('Sprzedaż narastająco', Suma_sprzedaży)print("Poprawić sprzedaż")
wynik:Sprzedaż narastająco 100.5Sprzedaż narastająco 300.5Sprzedaż narastająco 600.5Poprawić sprzedażPoniżej opisane są poszczególne fragmenty podanego w przykładzie kodu:

Szczegółowe informacje dotyczące list znajdziesz w artykule Python lista
Użycie pętli for z obiektem typu krotka (tuple)
Obiektu krotka używamy, jeśli jakieś elementy są w programie na stałe np. pory roku, miesiące, dni tygodnia. Szczegółowe informacje dotyczące krotek znajdziesz w artykule Python krotka
Przykład 6
W przykładzie:
- do zmiennej o nazwie „miesiące” przypisujemy listę miesięcy
- używamy pętli for do iteracji po zmiennej „miesiące”
- tworzymy zmienną o nazwie „miesiąc” w pętli. Pętla przechodzi po liście miesięcy zawartych w zmiennej „miesiące”. Za każdym obrotem uruchamia funkcję print(), za pomocą której drukuje stały napis „Przychody firmy w:” i przypisuje do tego napisu jeden miesiąc.
miesiące = ("styczeń", "luty", "marzec", "kwiecień", "maj","czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad","grudzień")for miesiąc in miesiące: print("Przychody firmy w:", miesiąc)wynik: Przychody firmy w: styczeń Przychody firmy w: luty Przychody firmy w: marzec Przychody firmy w: kwiecień Przychody firmy w: maj Przychody firmy w: czerwiec Przychody firmy w: lipiec Przychody firmy w: sierpień Przychody firmy w: wrzesień Przychody firmy w: październik Przychody firmy w: listopad Przychody firmy w: grudzień
Przykład 7
Aby wydrukować np. tylko miesiące z drugiego kwartału użyjemy opcji wykrajania (ang. slicing) z tekstów przy użyciu indeksów. W przykładzie wybieramy z tuple miesiące kwiecień, maj, czerwiec. Wpisujemy od 3 do 6 gdyż w Pythonie indeksowanie zaczyna się od zera. Styczeń ma indeks zero a kwiecień indeks 3.
miesiące = ("styczeń", "luty", "marzec", "kwiecień", "maj","czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad","grudzień")for miesiąc in miesiące[3:6]: print("Przychody firmy w:", miesiąc)
wynik:Przychody firmy w: kwiecieńPrzychody firmy w: majPrzychody firmy w: czerwiecUżycie pętli for z obiektem typu tekst (string)
Przykład 8
W przykładzie do zmiennej „słowo” przypisujemy słowo „Banana”. Następnie tworzymy pętlę, która iteruje się po słowie „Banana” i za każdym obrotem drukuje jedną literę używając funkcji print().
słowo = "Banana"for litery in słowo : print(litery)
wynik:BananaPrzykład 9
W przykładzie:
- za pomocą funkcji input() prosimy użytkownika o podanie jakiegoś słowa
- za pomocą funkcji print() wyświetlamy napis „Oto poszczególne litery Twojego słowa:”
- za pomocą pętli for i funkcji print() drukujemy listę liter zawartych w podanym przez użytkownika słowie
word = input("Wprowadź jakieś słowo:")print("Oto poszczególne litery Twojego słowa:")for letter in word: print(letter)Przykład 10
W przykładzie:
- do zmiennej „adres” przypisujemy adres
- tworzymy pętlę i umieszczamy w niej funkcję isnumeric(). Przy każdym obrocie pętli, program sprawdzi, czy znak w kodzie pocztowym jest liczbą. Jeśli znak będzie liczbą zostanie wydrukowany za pomocą funkcji print().
adres = "Warszawa 00-222"for kod in adres: if kod.isnumeric(): print(kod)
wynik:00222Aby wydrukować kod pocztowy w jednej linii do funkcji print() dodajemy parametr „end”. Parametr ten przyjmuje domyślną wartość nowej linii. W przykładzie domyślny znak nowej linii nadpisujemy spacją.
adres = "Warszawa 00-222"for kod in adres: if kod.isnumeric(): print(kod, end = " ")
wynik:0 0 2 2 2Użycie pętli for z obiektem typu słownik (dictionary)
Przykład 11
W przykładzie tworzymy obiekt typu słownik i przypisujemy do niego państwa oraz ich stolice. Następnie za pomocą pętli i zawartej w niej funkcji print() drukujemy miasta wraz z ich stolicami.
stolice = {}stolice['Polska'] = 'Warszawa'stolice['Niemcy'] = 'Berlin'stolice['Austria'] = 'Wiedeń'for kraj in stolice: print(kraj)
wynik:PolskaNiemcyAustriaUżycie pętli for z funkcją range()
Funkcja range() zwraca szczególny typ obiektu jakim jest generator. Generator tworzy liczby całkowite. Po utworzeniu generatora możemy wykorzystać go w pętli.
Funkcja range() posiada 3 argumenty: wartość początkowa, wartość końcowa, krok o jaki zmienia się wartość z każdym obrotem pętli. Jeśli zmiana następuje co 1, nie musimy podawać trzeciego argumentu.
Przykład 12
W poniższym przykładzie sumujemy liczby od 1 do n włącznie. Jako n ustawiamy liczbę 7. Wartość początkowa (przypisana do zmiennej „suma”) wynosi 0, wartość końcowa (przypisana do zmiennej „n”) wynosi 7, a zmiana następuje co 1.
suma = 0n = 7for i in range(1, n + 1): suma += iprint(suma)
wynik: 28Przykład 13
W poniższym przykładzie za pomocą funkcji range() wygenerujemy cyfry 0,2,4 gdyż jako:
- wartość początkową ustawiamy zero
- wartość końcową ustawiamy 6
- krok, o jaki zmienia się wartość ustawiamy na 2
Range() generuje sześć cyfr (od zera do piątki). Dlatego szóstka nie pojawia się w wyniku.
for i in range(0, 6, 2): print(i)
#wynik024Przykład 14
Aby ustawić kolejność liczb od największych do najmniejszych zmieniamy argumenty w funkcji range() następująco.
for i in range(6, 0, -2): print(i)
#wynik642Funkcja range() generuje sześć cyfr (od szóstki do jedynki). Dlatego zero nie pojawia się w wyniku.
Instrukcja break
Za pomocą instrukcji break wychodzimy z najbliższej pętli while lub for.
Przykład 15
W przykładzie:
- do zmiennej „lista_miast” przypisujemy miasta Kraków, Warszawa, Poznań
- w pętli for umieszczamy instrukcje break oraz if – pętla zostanie przerwana instrukcją break, jeśli miastem jest Warszawa
- za pomocą funkcji print() drukujemy wszystkie miasta, które są przed miastem Warszawa. Miasta, które są po Warszawie się nie wydrukują, gdyż po dotarciu pętlą do słowa „Warszawa” wykonywanie pętli zostało przerwane i uruchomiła się funkcja print()
lista_miast = ("Kraków", "Warszawa", "Poznań")for miasto in lista_miast: if miasto == "Warszawa": break print(miasto)wynik: Kraków
Przykład 16
W przykładzie:
- do zmiennej „licznik” przypisujemy wartość zero
- tworzymy pętlę while i za każdym obrotem pętli zwiększamy licznik o 1
- kiedy w zmiennej „licznik” pojawi się wartość 3 pętla zostanie przerwana
licznik = 0while True: print(licznik), licznik += 1 if licznik >= 3: break
wynik:012Instrukcja continue
Za pomocą instrukcji continue przechodzimy do następnego kroku w pętli.
Przykład 17
W przykładzie:
- do zmiennej „kod” przypisujemy znaki 12F45
- za pomocą pętli for pobieramy kolejne znaki ze zmiennej „kod” i przypisujemy je do zmiennej „znak”
- w instrukcji if sprawdzamy warunek, czy pobrany znak jest cyfrą 2. Jeśli jest znakiem 2 pomijamy go i bierzemy kolejny znak ze zmiennej „kod”
kod = "12F45"for znak in kod: if znak == "2": continue print(znak)
wynik:1F45Przykład 18
W przykładzie:
- do zmiennej „cel” przypisujemy wartość 1000
- tworzymy pętlę while, w której przy każdym obrocie do wartości w zmiennej „cel” dodajemy 100. Pętla ma się wykonywać dotąd, aż wartość w zmiennej „cel” osiągnie wysokość 1500
- w pierwszej instrukcji if sprawdzamy, czy wartość wynosi 1300. Jeśli tak, drukujemy napis „87% celu osiągnięto” i kontynuujemy wykonywanie pętli za pomocą instrukcji „continue”
- w drugiej instrukcji if sprawdzamy czy cel wynosi 1500. Jeśli tak, przerywamy pętlę
cel = 1000while cel < 1500: cel += 100 if cel== 1300: continue print('87% celu osiągnięto') if cel == 1500: breakprint('Cel osiągnięty:',cel)Pętle zagnieżdżone
Pętla zagnieżdżona jest to pętla, która znajduje się w innej pętli.
Przykład 19
W przykładzie:
- do zmiennej „kolory” przypisujemy listę kolorów
- do zmiennej „marki” przypisujemy listę marek samochodów
- w pierwszej pętli for program wyciąga pierwszy element z kolekcji kolorów tj. kolor czerwony i uruchamia środek pętli, czyli drugą pętlę for, za pomocą której przegląda marki samochodów znajdujących się w zmiennej „marki”
- w drugiej pętli for znajduje się funkcja print(), za pomocą której drukowany jest kolor i marka
kolory = ["czerwony", "czarny"]marki = ["Opel", "Mercedes"]
for kolor in kolory: for marka in marki: print(kolor, marka)
wynik:czerwony Opelczerwony Mercedesczarny Opelczarny MercedesW kolejnych obrotach pętli będą wyświetlane (drukowane) następujące informacje:
- pierwszy obrót: czerwony Opel
- drugi obrót: czerwony Mercedes
- trzeci obrót: czarny Opel
- czwarty obrót: czarny Mercedes
Pętle nieskończone
Jeśli napiszemy program, w którym warunek nigdy nie może zostać spełniony powstanie pętla nieskończona,
while True: print("Pętla nieskończona")Aby przerwać taki program naciśnij klawisze Ctrl-C.
