Rozdział 10 · Trochę automatyzacji!
Wyszukiwanie, filtrowanie i streszczenie
Pętla w połączeniu z if jest już prawdziwym algorytmem: trzema najczęstszymi wzorcami, na których większość programów opiera się na cyklach.
Pętla + if = rzeczywiste algorytmy
Większość rzeczywistych problemów z pętlami to for lub
while w związku z if. Omówmy trzy
najczęstsze wzorce: wyszukiwanie, filtrowanie, sumowanie.
Szukanie (search)
poisk.py
chisla = [4, 8, 15, 16, 23, 42]
iskomoe = 16
najdeno = False
for n in chisla:
if n == iskomoe:
najdeno = True
break
print(najdeno)
Liczenie (counting)
podschet.py
chisla = [4, 8, 15, 16, 23, 42, 8, 4]
chetnye = 0
for n in chisla:
if n % 2 == 0:
chetnye += 1
print(chetnye)
Podsumowanie: ręczne i sum()
summa_vruchnuyu.py
chisla = [4, 8, 15, 16, 23, 42]
summa = 0
for n in chisla:
summa += n
print(summa)
summa_cherez_sum.py
chisla = [4, 8, 15, 16, 23, 42]
summa = sum(chisla)
print(summa)
sum() nie jest magią, lecz ten sam cykl w środku
sum() — funkcja wbudowana, która robi dokładnie to samo, co ręczna pętla z akumulatorem powyżej, tylko w jednej linijce. Warto najpierw napisać ręcznie (żeby zrozumieć, co się dzieje), a potem wiedzieć, że dla gotowego wyniku istnieje krótsza droga.Podgląd: Znajdź niskie i wysokie
min_max_vruchnuyu.py
chisla = [4, 8, 15, 16, 23, 42]
maksimum = chisla[0]
for n in chisla:
if n > maksimum:
maksimum = n
print(maksimum)
# to samo, krócej: print(max(chisla))
Filtrowanie — zbieramy tylko potrzebne
filtraciya.py
chisla = [4, 8, 15, 16, 23, 42]
chetnye_chisla = []
for n in chisla:
if n % 2 == 0:
chetnye_chisla.append(n)
print(chetnye_chisla)
Pętla strażnicza — specjalna wartość jako sygnał zatrzymania
Sentinel jest szczególnym znaczeniem, które samo w sobie nie jest częścią danych, ale sygnalizuje „dane na zewnątrz”
sentinel_cikl.py
summa = 0
while True:
chislo = input(„Wprowadź liczbę (stop - koniec): ”)
if chislo == "stop":
break
summa += int(chislo)
print(„Ilość:”, summa)
Opcjonalne: FizzBuzz
Klasyczne, ale nieobowiązkowe ćwiczenie rozgrzewkowe na pętle i warunki — jeśli ciekawi, spróbuj napisać je samodzielnie zanim zobaczysz rozwiązanie:
fizzbuzz.py
for n in range(1, 21):
if n % 15 == 0:
print(FizzBuzz)
elif n % 3 == 0:
print(„Fyzzz”)
elif n % 5 == 0:
print(Buzz)
else:
print(n)
Praktyka: wyszukiwanie, liczenie, stremywanie, filtrowanie
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Praktyka: pętla sentinelowa
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji