Kiedy wynik jest liczbą całkowitą, a kiedy ułamkiem
Kolejność działań i nawiasy
Zaokrąglanie round i wartość bezwzględna abs
Rozgrzewka · 3 minuty
Co pamiętacie z lekcji 3?
Co robi funkcja input i co oddaje programowi?
Jakiego typu jest to, co przychodzi z klawiatury?
Co się stanie, gdy dodacie dwie liczby z input bez int?
Część 1 · Operatory arytmetyczne
Sześć działań: dwa z nich są nowe
Operator
Nazwa
Przykład
Wynik
+
dodawanie
7 + 2
9
-
odejmowanie
7 - 2
5
*
mnożenie
7 * 2
14
/
dzielenie
7 / 2
3.5
//
dzielenie całkowite
7 // 2
3
%
reszta z dzielenia
7 % 2
1
Jabłka: 7 jabłek dla 2 osób. Każda dostaje 7 // 2, czyli 3, a 7 % 2, czyli 1 jabłko, zostaje w koszyku. Wynik / to zawsze float: 6 / 2 daje 3.0.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 227 (dodatek 8 „Operatory i funkcje matematyczne”, tabela operatorów arytmetycznych) · docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers)
Część 1 · Siódme działanie
Potęgowanie: dwie gwiazdki
Siódmy operator to **, czyli potęgowanie. Po lewej stoi podstawa, po prawej wykładnik. Uwaga: jedna gwiazdka to mnożenie, dwie to potęga.
5 ** 2 to 5 podniesione do kwadratu, czyli 5 razy 5.
2 ** 10 to dwójka pomnożona przez siebie dziesięć razy.
Wykładnik 0.5 daje pierwiastek kwadratowy: 9 ** 0.5 to 3.0.
docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 227 (dodatek 8, potęgowanie 2 ** 3)
Część 2 · Typ wyniku
Całkowita czy z przecinkiem?
Dwie zasady wystarczą. Po pierwsze: / zawsze daje float, nawet gdy dzieli się równo. Po drugie: gdy w działaniu jest choć jeden ułamek, cały wynik jest float.
docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 223 (dodatek 6 „Typy danych w języku Python”)
Część 2 · Kolejność działań
Python liczy jak na matematyce
Działania z jednego piętra Python liczy od lewej do prawej: 10 - 4 - 3 to 3. Nawias zmienia wszystko: 2 + 3 * 4 to 14, ale (2 + 3) * 4 to 20.
docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers)
Część 3 · Dwie funkcje
round i abs
Zapis
Wynik
Co się dzieje
round(2.6)
3
zaokrąglenie do najbliższej liczby całkowitej
round(2.5)
2
przy dokładnej połówce wynik idzie do liczby parzystej
round(3.5)
4
tu parzysta jest czwórka, więc w górę
round(113.0625, 2)
113.06
drugi argument to liczba miejsc po przecinku
abs(-2)
2
wartość bezwzględna, czyli odległość od zera
abs(-4.5)
4.5
ułamek zostaje ułamkiem, znika tylko minus
Ciekawostka: przy dokładnej połówce Python zaokrągla do liczby parzystej, dlatego round(2.5) daje 2, a round(3.5) daje 4. Dzięki temu w długiej kolumnie liczb błędy zaokrągleń w górę i w dół się znoszą.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 227 (dodatek 8, wbudowane funkcje matematyczne: round, abs) · docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers)
Część 3 · Działania na danych użytkownika
Program, który dzieli jabłka
print("Ile jabłek zebraliście?")
apples = int(input())
print("Ile jest osób?")
people = int(input())
each = apples // people
left = apples % people
print("Każdy dostaje", each, "jabłka, w koszyku zostaje", left)
print("Średnio na osobę:", round(apples / people, 2))
Ile jabłek zebraliście?
17
Ile jest osób?
5
Każdy dostaje 3 jabłka,
w koszyku zostaje 2
Średnio na osobę: 3.4
// mówi, ile pełnych jabłek dostaje każdy, % ile zostaje, a / z round podaje średnią.
docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 227 (dodatek 8, operatory // i %, funkcja round)
Ćwiczenie · przy komputerze · 12 minut
Ćwiczenie: policz i sprawdź
Zapisz na kartce swoje przewidywania, potem sprawdź w Pythonie: 13 // 4, 13 % 4, 13 / 4, 2 ** 10, round(7 / 3, 2), abs(-12).
Napisz program, który pyta o liczbę sekund i wypisuje ją jako minuty i sekundy. Sprawdź dla 125 i dla 200.
Policz bez komputera 2 + 3 * 4 ** 2, sprawdź w Pythonie, a potem dopisz nawias tak, żeby wyszło 80.
Jak to sprawdzić
W terminalu wpisz python3 i wciśnij Enter. Pojawią się trzy znaki >>>. Wpisuj kolejne działania i zatwierdzaj Enterem, wynik pojawia się od razu. Wyjście z trybu interaktywnego: exit() albo Ctrl+D.
Sprawdzenie
Trzy pytania na koniec
Czym różni się wynik 7 / 2 od wyniku 7 // 2?
Co wypisze print(2 + 3 * 4) i dlaczego?
Jakim działaniem sprawdzicie, czy liczba n jest parzysta?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
// i %
Przeliczanie sekund na minuty i sekundy: 125 // 60 to 2 minuty, 125 % 60 to 5 sekund
codziennie
% reszta z dzielenia
Co druga linia tabeli w innym kolorze: numer wiersza % 2; zadanie „co 15 minut”: minuta % 15 równa zero
codziennie
round do dwóch miejsc
Kwoty na fakturze i średnie w raportach zaokrągla się na samym końcu, nigdy w trakcie liczenia
standard w firmach
float do pieniędzy
Ceny trzyma się jako liczbę groszy w int, bo 0.1 + 0.2 daje 0.30000000000000004
zmienione
W praktyce: ułamki w komputerze są zapisywane dwójkowo, więc 0.1 i 0.2 to drobne przybliżenia. Ich suma wychodzi odrobinę za duża i widać to po siedemnastu cyfrach.