13

Przechodzenie po liście – dwa sposoby pętli

Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.

Czego się nauczysz

Lista i pętla to para, która wraca w każdym zadaniu. Po liście można przejść na dwa sposoby – krótszy, „pythonowy”, i dłuższy, z indeksem. Uczysz się obu, bo ten drugi to dosłowny odpowiednik pętli, której użyjesz w C#.

Po tej lekcji:

Wersja pythonowa – krótsza

oceny = [3, 4, 5, 2]
for ocena in oceny:
    print(ocena)

Zapis for ocena in oceny: czyta się dosłownie: dla każdej oceny w liście ocen. Zmienna sterująca przyjmuje po kolei wartości z listy.

To jest domyślny sposób. Gdy chcesz tylko przejść po wszystkich elementach i coś z nimi zrobić, wybierasz właśnie ten.

Wersja z indeksem – dłuższa, ale ważniejsza

for i in range(len(oceny)):
    print(f"Ocena {i + 1}: {oceny[i]}")
# Ocena 1: 3
# Ocena 2: 4

Pętla idzie po numerach pozycji, a wartość wyciągasz przez oceny[i]. Wygląda niezgrabnie, ale są dwa powody, dla których i tak się jej uczysz:

  1. Potrzebujesz jej wszędzie tam, gdzie ma się pojawić numer pozycji („Ocena nr 3”), gdzie podmieniasz element w trakcie pętli albo sięgasz jednocześnie do dwóch list po tym samym indeksie.
  2. To odpowiednik pętli z C#: for (int i = 0; i < n; i++). W klasie piątej będziesz nią obsługiwać tablicę kontrolek na ekranie aplikacji.
Numerację dla człowieka uzyskujesz przez i + 1, bo indeksy zaczynają się od zera, a ludzie liczą od jedynki.

Liczenie i filtrowanie w pętli po liście

Schemat jest zawsze taki sam jak przy sumowaniu z lekcji 9: zmienna wynikowa przed pętlą, zmiana w pętli, wypisanie po pętli.

oceny = [3, 5, 2, 6, 4]

ile = 0
for o in oceny:
    if o >= 4:
        ile += 1
print(ile)    # 3

najw = oceny[0]
for o in oceny:
    if o > najw:
        najw = o
print(najw)   # 6

Zaczęcie szukania największego od zera zepsuje program dla listy samych liczb ujemnych. Zawsze startuj od lista[0].

Ciekawostka: enumerate

W kodzie z lekcji jest jeszcze trzeci sposób – enumerate, który daje jednocześnie indeks i wartość. Nie jest wymagany na egzaminie, ale warto wiedzieć, że istnieje.

Spróbuj sam

W kodzie z lekcji dopisz do listy oceny kilka nowych wartości i uruchom program ponownie. Zobacz, która pętla wypisuje numery pozycji, a która same wartości.

Zadania z lekcji:

  1. Dla listy [3, 5, 2, 4, 6, 3, 5] wypisz każdą ocenę w osobnej linii, wersją pythonową.
  2. Tę samą listę wypisz z numeracją w formacie „Ocena nr 1: 3”. Tym razem użyj pętli z range(len(...)).
  3. Policz, ile ocen na liście jest wyższych od 3, i wypisz wynik. Nie używaj gotowych funkcji.
  4. Zbuduj nową listę zawierającą tylko oceny pozytywne, czyli od 2 wzwyż. Wypisz obie listy.
  5. Dla szybszych: znajdź największą ocenę bez używania funkcji max, startując od pierwszego elementu listy.

Sprawdź się

Na następnej lekcji: funkcje. Nadasz własnemu fragmentowi kodu nazwę i będziesz go wywoływać, ile razy chcesz.

Notatki

PDF
Zadania utrwalające Karta pracy do tej lekcji: zadania sprawdzające i domowe do samodzielnego zrobienia w swoim edytorze · 5 stron.
Zadania utrwalające – Przechodzenie po liście – dwa sposoby pętli
Strona 1 z 5 Strona 2 z 5 Strona 3 z 5 Strona 4 z 5 Strona 5 z 5

Prezentacja

Slajd 1 z 6
1 / 6

Kod

Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.

PY
demo_13_przechodzenie-po-liscie.py Kod z lekcji – otwórz, zmieniaj i uruchamiaj; wynik zobaczysz obok kodu.
demo_13_przechodzenie-po-liscie.py
Wynik programu
Kliknij „Uruchom”, żeby zobaczyć tutaj wynik programu.