Jak zapisać listę z trzema ocenami i jak odczytać z niej pierwszą ocenę?
Co oddaje len(grades) i jaki indeks ma ostatni element tej listy?
Co robi grades.append(6) z listą [4, 5, 3]?
Część 1 · Pętla po liście
Jedna pętla, cała lista
Pętla for bierze po kolei elementy listy, w takiej kolejności, w jakiej w niej stoją. Nie musicie znać ich liczby ani pisać indeksów.
grades = [4, 5, 3, 5, 2]
for grade in grades:
print(grade)
4
5
3
5
2
Nazwa grade jest Wasza: to pudełko, do którego pętla wkłada kolejny element listy. Instrukcje z wcięciem powtarzają się tyle razy, ile lista ma elementów.
docs.python.org, The Python Tutorial, rozdz. 4.2 (for Statements) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 225 (dodatek 7, pętla for po elementach listy)
Część 1 · Element czy indeks
Dwie drogi przez tę samą listę
Gdy potrzebujecie samych wartości, wybierajcie pętlę po elementach: jest krótsza i nie da się w niej pomylić numeru. Numer pozycji przyda się dopiero wtedy, gdy trzeba go wypisać albo podmienić element.
docs.python.org, The Python Tutorial, rozdz. 4.2 (for Statements) i 4.3 (The range() Function)
Część 2 · Suma i średnia
Licznik, który rośnie w pętli
grades = [4, 5, 3, 5, 2]
total = 0
for grade in grades:
total = total + grade
print(total)
print(total / len(grades))
Wynik:19, a potem 3.8.
Zmienna total to licznik: pudełko, do którego pętla dokłada kolejną wartość. Zapis total = total + grade znaczy „nowa zawartość to stara plus ta ocena”.
Po kolei: 0 → 4 → 9 → 12 → 17 → 19. Średnia to suma podzielona przez liczbę elementów, a dzielenie / zawsze daje float.
docs.python.org, The Python Tutorial, rozdz. 4.2 (for Statements) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 225 (dodatek 7, pętla for)
Część 2 · Największy element
Pamiętaj najlepszy dotychczasowy wynik
grades = [4, 5, 3, 5, 2]
biggest = grades[0]
for grade in grades:
if grade > biggest:
biggest = grade
print(biggest)
Wynik:5.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 130 (9.1 Szukamy największej liczby, lista kroków algorytmu)
Część 3 · Gotowe funkcje
Cztery funkcje, które liczą za Was
Python ma te działania gotowe. Do nawiasu wstawiacie nazwę listy, a funkcja oddaje jedną wartość.
Zapis
Co robi
Wynik dla [4, 5, 3, 5, 2]
sum(grades)
dodaje wszystkie elementy
19
max(grades)
oddaje największy element
5
min(grades)
oddaje najmniejszy element
2
len(grades)
liczy elementy
5
sum(grades) / len(grades)
średnia
3.8
W praktyce: pętla for chodzi po elementach dowolnej sekwencji, nie tylko listy. Zapis for letter in "Ola": wypisze w osobnych liniach O, l i a. Napisami zajmiemy się na osobnej lekcji.
Napisy też się porządkują, alfabetycznie: ["Zosia", "Ola", "Bartek"] po sort() to ['Bartek', 'Ola', 'Zosia'].
sort porządkuje listę w miejscu: zmienia tę listę i nic nie oddaje. Dlatego print(grades.sort()) wypisze None, a grades = grades.sort() zgubi całą listę.
docs.python.org, The Python Tutorial, rozdz. 5.1 (More on Lists, list.sort)
Ćwiczenie · przy komputerze · 12 minut
Ćwiczenie: pomiary temperatury
Utwórz plik temperatures.py i wpisz do niego listę: temps = [21.5, 19.0, 23.5, 18.0]. Potem dopisz rozwiązania trzech zadań, uruchamiając program po każdym z nich.
Wypisz każdy pomiar w osobnej linii, używając pętli po elementach listy.
Policz sumę i średnią pomiarów bez gotowych funkcji: użyj licznika i pętli.
Znajdź najwyższy pomiar własną pętlą, porównaj wynik z max(temps), a na koniec posortuj listę i wypisz ją.
Jak to sprawdzić
Po każdym zadaniu uruchom program i porównaj to, co widzisz na ekranie, z tym, co policzyłeś w głowie. Jeśli średnia wyszła inna niż 20.5, sprawdź, czy zerujesz licznik przed pętlą, a nie w środku.
Sprawdzenie
Trzy pytania na koniec
Czym różni się for grade in grades: od for i in range(len(grades)):?
Dlaczego total = 0 stoi przed pętlą, a nie w jej wnętrzu?
Co wypisze print(grades.sort()) i dlaczego?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Pętla po liście
Sklep przechodzi po liście produktów w koszyku i sumuje ceny przed zapłatą
codziennie
sum i średnia
Dziennik elektroniczny liczy średnią z ocen dokładnie tak: suma podzielona przez liczbę ocen
codziennie
max i min
Prognoza pogody pokazuje temperaturę najwyższą i najniższą z pomiarów całej doby
codziennie
sort
Lista plików w oknie systemu układa się po nazwie albo po dacie, gdy klikniesz nagłówek kolumny