Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
range() do powtórzeń liczbowych i przewidywać wyłączną wartość końcową.enumerate(), gdy potrzebny jest zarówno numer, jak i wartość.Pętle for w Pythonie zwykle iterują bezpośrednio po wartościach:
for service in services:
print(service)Jest to często czytelniejsze niż ręczne zarządzanie indeksami. Użyj range(), gdy zadanie naprawdę dotyczy liczb, pozycji lub ustalonej liczby powtórzeń.
range(start, stop) zawiera start, ale zatrzymuje się przed stop. Trzeci argument ustawia krok:
range(2, 9, 2)daje 2, 4, 6 i 8.
Gdy potrzebujesz numeru do wyświetlenia razem z wartością, enumerate(values, start=1) jest zwykle jaśniejsze niż range(len(values)).
Pętle często aktualizują też sumy lub liczniki. Zainicjalizuj akumulator przed pętlą, zaktualizuj go w bloku i użyj końcowego wyniku po pętli.
Wartości sekwencji podane w tej lekcji są danymi wejściowymi do ćwiczeń z pętlami. Pełne operacje na listach są omówione w jednostce o strukturach danych.
Zmienna pętli otrzymuje po kolei każdą wartość.
regions = ["us", "eu", "apac"]
for region in regions:
print(f"Region: {region}")Wynik:
Region: us
Region: eu
Region: apacIndeks nie jest potrzebny, bo zadanie dotyczy wartości regionów.
Wartość końcowa nie jest uwzględniona.
for attempt in range(1, 4):
print(f"Attempt {attempt}")Wynik:
Attempt 1
Attempt 2
Attempt 3Pętla zatrzymuje się przed 4.
Trzeci argument określa odstęp między generowanymi wartościami.
for port in range(9000, 9005, 2):
print(port)Wynik:
9000
9002
9004Ciąg za każdym razem rośnie o dwa.
enumerate()enumerate() daje zarówno licznik, jak i bieżącą wartość.
workers = ["api", "queue", "mailer"]
for number, worker in enumerate(workers, start=1):
print(f"{number}. {worker}")Wynik:
1. api
2. queue
3. mailerWyświetlana numeracja zaczyna się od jedynki bez ręcznych obliczeń na indeksach.
Zainicjalizuj akumulator przed pętlą.
durations = [12, 18, 15]
total = 0
for duration in durations:
total += duration
print(f"Total: {total}")Wynik:
Total: 45Każda iteracja dodaje jeden czas trwania do bieżącej sumy.
| Potrzeba | Preferowana pętla |
|---|---|
| Praca z każdą wartością | for item in items |
| Powtarzanie po liczbach | for number in range(...) |
| Numerowanie każdej wartości | for number, item in enumerate(...) |
| Obliczenie sumy | Inicjalizacja przed pętlą, aktualizacja wewnątrz |
range() zostanie uwzględniona.