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)
STARTchisla, pustylista wynikun % 2 == 0?TAKdodać n do efektuNIEpowrót listawynikKONIEC
Wzorzec filtrowania: przejdź przez wszystkie elementy, zostawiając tylko te, które spełniły dany warunek

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)
STARTsumma = 0input == „stop”TAKsumma += int(wprowadzanie)zdobyć następnąinputtemuNIEKONIEC
cykl Sentinel: użytkownik decyduje, kiedy wyczerpują się dane

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
Otwórz praktykę →
Praktyka: pętla sentinelowa
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →