Lecciones del módulo (3/4)
Números y módulo math
Python distingue dos tipos numéricos fundamentales: int (enteros de precisión
arbitraria, sin desbordamiento) y float (número de coma flotante de 64 bits, doble
precisión).
type(42) # <class 'int'>
type(3.14) # <class 'float'>
type(10 ** 100) # <class 'int'> — interi grandi a piacereOperadores aritméticos
| Op | Significado | Ejemplo | Resultado |
|---|---|---|---|
+ | suma | 2 + 3 | 5 |
- | resta | 5 - 2 | 3 |
* | multiplicación | 4 * 3 | 12 |
/ | división real | 10 / 4 | 2.5 |
// | división entera | 10 // 4 | 2 |
% | módulo (resto) | 10 % 3 | 1 |
** | potencia | 2 ** 10 | 1024 |
Advertencia: / siempre devuelve un float, incluso con dos enteros (10 / 2
devuelve 5.0, no 5). Para la división entera usa //.
10 / 4 # 2.5
10 // 4 # 2
-7 // 2 # -4 (arrotonda verso il basso, non verso lo zero)Funciones numéricas integradas
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]) # 6El módulo 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) # 6La trampa del float
Los floats son aproximaciones binarias: 0.1 + 0.2 no es exactamente igual a
0.3.
0.1 + 0.2 # 0.30000000000000004
0.1 + 0.2 == 0.3 # False !Para comparaciones seguras usa math.isclose(a, b) o, en contextos financieros, el
módulo decimal.
Precisión de float y el módulo decimal
Los floats en Python se implementan como números de coma flotante de doble precisión (estándar IEEE 754). En consecuencia, los cálculos como 0.1 + 0.2 no arrojan exactamente 0.3, sino 0.30000000000000004. Si necesitas precisión matemática absoluta (ej. para aplicaciones financieras), usa el módulo decimal de la biblioteca estándar.
Pruébalo tú
Dado `seconds = 3725`, calcula `hours`, `minutes`, `remaining_seconds` usando // y %. Evalúa la tupla `(hours, minutes, remaining_seconds)`.
Mostrar pista
// hace la división entera, % obtiene el resto.
Solución disponible después de 3 intentos
Ejercicio de repaso
Dado `radius = 5`, calcula el área del círculo en `area` usando math.pi. Evalúa `area` redondeada a 2 decimales con round.
Mostrar pista
math.pi * radius ** 2
Solución disponible después de 3 intentos
Desafío adicional
Importa el módulo `math`. Calcula la raíz cuadrada de `16` usando `math.sqrt`, suma el resultado al valor redondeado de `3.74` (usando `round()`), y almacena la suma final en `total_val`. Finalmente, evalúa la variable.
Mostrar pista
math.sqrt(16) devuelve 4.0. round(3.74) devuelve 4. Súmalos y asígnalos a total_val.
Solución disponible después de 3 intentos