Data: 16.07.2021

Jak używać pętli w Pythonie?

Python pętle

Spis treści

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 = 1
while cyfra < 6:
print('Bieżąca cyfra wynosi:', cyfra)
cyfra = cyfra + 1
print('Podaj inną cyfrę')
wynik:
Bieżąca cyfra wynosi: 1
Bieżąca cyfra wynosi: 2
Bieżąca cyfra wynosi: 3
Bieżąca cyfra wynosi: 4
Bieżąca cyfra wynosi: 5
Podaj inną cyfrę

Poniżej opis poszczególnych fragmentów podanego w przykładzie kodu:

Title

Blok while możemy umieścić w jednym wierszu rozdzielając składowe średnikami:

Przykład 2

cyfra = 1
while cyfra < 6: print('Bieżąca cyfra wynosi:', cyfra); cyfra = cyfra + 1

Pę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 = 1
while cyfra < 6:
print('Bieżąca cyfra wynosi:', cyfra)
cyfra = cyfra + 1
else:
print('Cyfra równa się', cyfra)
print('Podaj inną cyfrę')
wynik:
Bieżąca cyfra wynosi: 1
Bieżąca cyfra wynosi: 2
Bieżąca cyfra wynosi: 3
Bieżąca cyfra wynosi: 4
Bieżąca cyfra wynosi: 5
Cyfra równa się 6
Podaj 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łko
Uczeń zjadł: gruszkę
Uczeń zjadł: banany

Przykł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 = 0
for 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.5
Sprzedaż narastająco 300.5
Sprzedaż narastająco 600.5
Poprawić sprzedaż

Poniżej opisane są poszczególne fragmenty podanego w przykładzie kodu:

Title

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: maj
Przychody firmy w: czerwiec

Uż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:
B
a
n
a
n
a

Przykł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:
0
0
2
2
2

Aby 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 2

Uż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:
Polska
Niemcy
Austria

Uż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 = 0
n = 7
for i in range(1, n + 1):
suma += i
print(suma)
wynik: 28

Przykł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)
#wynik
0
2
4

Przykł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)
#wynik
6
4
2

Funkcja 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 = 0
while True:
print(licznik),
licznik += 1
if licznik >= 3:
break
wynik:
0
1
2

Instrukcja 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:
1
F
4
5

Przykł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 = 1000
while cel < 1500:
cel += 100
if cel== 1300:
continue
print('87% celu osiągnięto')
if cel == 1500:
break
print('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 Opel
czerwony Mercedes
czarny Opel
czarny Mercedes

W 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.

Rafał Lelusz
Rafał Lelusz
Programista Python, C#
Udostępnij wpis:udostępnij Facebookudostępnij Linkedinudostępnij e-mail

Polecane