Wprowadzenie do pętli
Pętle to konstrukcje programistyczne, które pozwalają na wielokrotne wykonywanie tego samego bloku kodu. W Pythonie mamy do dyspozycji dwa główne typy pętli: for i while.
Pętla for
Pętla for jest używana do iteracji po sekwencjach (listach, tuple, ciągach znaków, itp.):
Podstawowa składnia:
# Iteracja po liście
owoce = ["jabłko", "banan", "gruszka"]
for owoc in owoce:
print(owoc)
# Wynik:
# jabłko
# banan
# gruszka
Używanie range():
# Liczby od 0 do 4
for i in range(5):
print(i)
# Liczby od 1 do 5
for i in range(1, 6):
print(i)
# Co drugi element
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
Enumerate() - indeks i wartość:
kolory = ["czerwony", "zielony", "niebieski"]
for indeks, kolor in enumerate(kolory):
print(f"{indeks}: {kolor}")
# Wynik:
# 0: czerwony
# 1: zielony
# 2: niebieski
Pętla while
Pętla while wykonuje się dopóki warunek jest prawdziwy:
licznik = 0
while licznik < 5:
print(f"Licznik: {licznik}")
licznik += 1
# Wynik:
# Licznik: 0
# Licznik: 1
# Licznik: 2
# Licznik: 3
# Licznik: 4
Nieskończona pętla z break:
while True:
odpowiedz = input("Wpisz 'quit' aby zakończyć: ")
if odpowiedz == "quit":
break
print(f"Napisałeś: {odpowiedz}")
Instrukcje kontrolne
break - przerwanie pętli:
for i in range(10):
if i == 5:
break
print(i) # Wyświetli: 0, 1, 2, 3, 4
continue - pominięcie iteracji:
for i in range(10):
if i % 2 == 0: # jeśli parzysta
continue
print(i) # Wyświetli: 1, 3, 5, 7, 9
else w pętlach:
for i in range(5):
print(i)
else:
print("Pętla zakończona normalnie")
# else wykonuje się tylko gdy pętla nie została przerwana przez break
List Comprehensions
List comprehensions to elegancki sposób tworzenia list w jednej linii:
Podstawowa składnia:
# Tradycyjna pętla
kwadraty = []
for x in range(10):
kwadraty.append(x**2)
# List comprehension
kwadraty = [x**2 for x in range(10)]
print(kwadraty) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Z warunkiem:
# Tylko parzyste kwadraty
parzyste_kwadraty = [x**2 for x in range(10) if x % 2 == 0]
print(parzyste_kwadraty) # [0, 4, 16, 36, 64]
Zagnieżdżone comprehensions:
# Macierz 3x3
macierz = [[i+j for j in range(3)] for i in range(3)]
print(macierz) # [[0, 1, 2], [1, 2, 3], [2, 3, 4]]
Dictionary i Set Comprehensions
Dictionary comprehension:
# Słownik kwadratów
kwadraty_dict = {x: x**2 for x in range(5)}
print(kwadraty_dict) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Set comprehension:
# Zbiór pozostałości z dzielenia
reszty = {x % 3 for x in range(10)}
print(reszty) # {0, 1, 2}
Praktyczne przykłady
Suma elementów:
liczby = [1, 2, 3, 4, 5]
suma = sum(liczba for liczba in liczby if liczba % 2 == 1)
print(suma) # 9 (1+3+5)
Przetwarzanie tekstu:
tekst = "Python jest super"
duze_litery = [slowo.upper() for slowo in tekst.split()]
print(duze_litery) # ['PYTHON', 'JEST', 'SUPER']
Najlepsze praktyki
- Używaj for zamiast while gdy wiesz ile iteracji potrzebujesz
- List comprehensions są szybsze niż tradycyjne pętle
- Unikaj modyfikowania listy podczas iteracji po niej
- Używaj enumerate() gdy potrzebujesz indeksu
- Pamiętaj o break i continue dla kontroli przepływu
Podsumowanie
Pętle są nieodłącznym elementem programowania w Pythonie. Opanowanie różnych typów pętli i ich zaawansowanych form jak comprehensions znacznie zwiększy efektywność Twojego kodu i sprawi, że będzie on bardziej czytelny.