Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 3 z 415/36 w kursie~10 min
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).

Python
type(42)       # <class 'int'>
type(3.14)     # <class 'float'>
type(10 ** 100)  # <class 'int'>   — interi grandi a piacere

Operatory arytmetyczne

OpZnaczeniePrzykładWynik
+dodawanie2 + 35
-odejmowanie5 - 23
*mnożenie4 * 312
/dzielenie rzeczywiste10 / 42.5
//dzielenie całkowite10 // 42
%modulo (reszta)10 % 31
**potęgowanie2 ** 101024

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 //.

Python
10 / 4    # 2.5
10 // 4   # 2
-7 // 2   # -4   (arrotonda verso il basso, non verso lo zero)

Wbudowane funkcje numeryczne

Python
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])        # 6

Moduł math

Python
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)      # 6

Pułapka liczb zmiennoprzecinkowych

Liczby zmiennoprzecinkowe to binarne przybliżenia: 0.1 + 0.2 nie jest dokładnie równe 0.3.

Python
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

Ćwiczenie#python.m4.l3.e1
Próby: 0Ładowanie...

Mając dane `seconds = 3725`, oblicz `hours`, `minutes`, `remaining_seconds` przy użyciu // i %. Oceń krotkę `(hours, minutes, remaining_seconds)`.

Ładowanie edytora...
Pokaż wskazówkę

// wykonuje dzielenie całkowite, % oblicza resztę.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#python.m4.l3.e2
Próby: 0Ładowanie...

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.

Ładowanie edytora...
Pokaż wskazówkę

math.pi * radius ** 2

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#python.m4.l3.e3
Próby: 0Ładowanie...

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ą.

Ładowanie edytora...
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