Lekcje modułu (3/4)
Liczby i moduł math
Python rozróżnia dwa podstawowe typy numeryczne: int (liczby całkowite o
dowolnej precyzji — bez przepełnienia) oraz float (64-bitowe liczby
zmiennoprzecinkowe o podwójnej precyzji).
type(42) # <class 'int'>
type(3.14) # <class 'float'>
type(10 ** 100) # <class 'int'> — interi grandi a piacereOperatory arytmetyczne
| Op | Znaczenie | Przykład | Wynik |
|---|---|---|---|
+ | dodawanie | 2 + 3 | 5 |
- | odejmowanie | 5 - 2 | 3 |
* | mnożenie | 4 * 3 | 12 |
/ | dzielenie rzeczywiste | 10 / 4 | 2.5 |
// | dzielenie całkowite | 10 // 4 | 2 |
% | modulo (reszta) | 10 % 3 | 1 |
** | potęgowanie | 2 ** 10 | 1024 |
Uwaga: / zawsze zwraca float, nawet przy dzieleniu dwóch liczb całkowitych (10 / 2
zwraca 5.0, a nie 5). Do dzielenia całkowitego użyj //.
10 / 4 # 2.5
10 // 4 # 2
-7 // 2 # -4 (arrotonda verso il basso, non verso lo zero)Wbudowane funkcje numeryczne
abs(-5) # 5
min(3, 1, 2) # 1
max([3, 1, 2]) # 3 (su iterabile)
round(3.7) # 4
round(3.14159, 2) # 3.14
sum([1, 2, 3]) # 6Moduł math
import math
math.pi # 3.141592653589793
math.sqrt(16) # 4.0
math.floor(3.9) # 3 (verso meno infinito)
math.ceil(3.1) # 4 (verso più infinito)
math.log(math.e) # 1.0
math.gcd(12, 18) # 6Pułapka liczb zmiennoprzecinkowych
Liczby zmiennoprzecinkowe to binarne przybliżenia: 0.1 + 0.2 nie jest dokładnie równe
0.3.
0.1 + 0.2 # 0.30000000000000004
0.1 + 0.2 == 0.3 # False !Do bezpiecznych porównań użyj math.isclose(a, b) lub w kontekstach finansowych modułu
decimal.
Precyzja float i moduł decimal
Liczby zmiennoprzecinkowe w Pythonie są implementowane jako liczby zmiennoprzecinkowe podwójnej precyzji (standard IEEE 754). W rezultacie obliczenia takie jak 0.1 + 0.2 nie dają dokładnie 0.3, lecz 0.30000000000000004. Jeśli potrzebujesz absolutnej precyzji matematycznej (np. w aplikacjach finansowych), użyj modułu decimal z biblioteki standardowej.
Spróbuj sam
Mając dane `seconds = 3725`, oblicz `hours`, `minutes`, `remaining_seconds` przy użyciu // i %. Oceń krotkę `(hours, minutes, remaining_seconds)`.
Pokaż wskazówkę
// wykonuje dzielenie całkowite, % oblicza resztę.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Mając dany `radius = 5`, oblicz pole koła w zmiennej `area` przy użyciu math.pi. Oceń `area` zaokrąglone do 2 miejsc po przecinku za pomocą round.
Pokaż wskazówkę
math.pi * radius ** 2
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Zaimportuj moduł `math`. Oblicz pierwiastek kwadratowy z liczby `16` za pomocą `math.sqrt`, dodaj wynik do zaokrąglonej wartości `3.74` (używając `round()`) i zapisz ostateczną sumę w zmiennej `total_val`. Na koniec oceń tę zmienną.
Pokaż wskazówkę
math.sqrt(16) zwraca 4.0. round(3.74) zwraca 4. Zsumuj je i przypisz do total_val.
Rozwiązanie dostępne po 3 próbach