sum(), min(), max(), sorted(), any() i all()

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

sum(), min(), max(), sorted(), any() i all()
In Progress

Python • kurs podstawowy • lekcja 23

sum(), min(), max(), sorted(), any() i all()

Lista wyników może być gotowa, a potrzebujesz tylko podsumowania.

Twój cel: Podsumujesz kolekcję i wybierzesz między any() a all().

Listy, bool i pętle.

Co ma zrobić program?

sum dodaje liczby, min wybiera najmniejszą, max największą. sorted tworzy nową uporządkowaną listę; oryginalna pozostaje w dotychczasowej kolejności. reverse=True odwraca porządek sortowania.

any odpowiada, czy choć jeden element jest interpretowany jako prawdziwy. all odpowiada, czy wszystkie są tak interpretowane. Zaczniemy od jawnej listy bool, aby odróżnić „przynajmniej jeden” od „wszyscy”. Nie trzeba jeszcze poznawać generatorów.

Dla pustej listy sum daje 0, sorted daje [], any daje False, a all True: nie znaleziono elementu łamiącego warunek. Nie oznacza to, że ktokolwiek przeszedł test. min i max bez dodatkowych ustawień zgłaszają ValueError dla pustej listy. Średnia wymaga sprawdzenia długości przed dzieleniem.

Przewidź przed uruchomieniem

numbers = [8, 3, 5]
ordered = sorted(numbers)
print(sum(numbers), min(numbers), max(numbers))
print(ordered)
print(numbers)
checks = [True, False, True]
print(any(checks), all(checks))
Porównaj wynik i prześledź mechanizm
Dobierz funkcję do pytania. Sprawdź osobno brak danych i różnicę między „ktoś” a „wszyscy”.
Dobierz funkcję do pytania. Sprawdź osobno brak danych i różnicę między „ktoś” a „wszyscy”.

numbers pozostanie [8, 3, 5], ordered to [3, 5, 8]. Suma, minimum i maksimum to 16, 3 i 8. any da True, bo są elementy True; all da False, bo występuje False.

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

16 3 8
[3, 5, 8]
[8, 3, 5]
True False
Operacja Wynik Czy zmienia wejście?
sorted([8, 3, 5]) [3, 5, 8] nie
any([True, False, True]) True nie
all([True, False, True]) False nie
Model do prześledzenia: porównaj każdy etap z kodem. Etykiety opisują znaczenie danych, nie tylko ich wygląd.

Zmień działający program

Utwórz listę ocen logicznych score >= 5 za pomocą pętli i append. Potem sprawdź, czy wszyscy osiągnęli próg.

Pierwsza wskazówka

Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.

Porównaj swoją modyfikację
scores = [8, 3, 5]
passed = []
for score in scores:
    passed.append(score >= 5)
print(all(passed))

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

False

Znajdź przyczynę problemu

Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.

Zamierzone działanie: Obsłuż brak danych przed obliczeniem średniej.

numbers = []
print(sum(numbers) / len(numbers))
Trop do diagnozy

Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.

Zastosuj w nowej sytuacji

Wskazówka do rozpoczęcia

Dobierz funkcję do pytania. Sprawdź osobno brak danych i różnicę między „ktoś” a „wszyscy”.

Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:

temperatures = [18, 22, 20]
Rozwiązanie do samodzielnej kontroli
temperatures = [18, 22, 20]
if len(temperatures) == 0:
    print("Brak danych")
else:
    print(min(temperatures), max(temperatures))
    print(sorted(temperatures, reverse=True))

Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:

18 22
[22, 20, 18]

Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.

Co zabierasz do kolejnego programu?

Dobierz funkcję do pytania. Sprawdź osobno brak danych i różnicę między „ktoś” a „wszyscy”.

Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.