Saltar al contenido principal
eLearner.app
Módulo 4 · Lección 3 de 415/36 en el curso~10 min
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).

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

Operadores aritméticos

OpSignificadoEjemploResultado
+suma2 + 35
-resta5 - 23
*multiplicación4 * 312
/división real10 / 42.5
//división entera10 // 42
%módulo (resto)10 % 31
**potencia2 ** 101024

Advertencia: / siempre devuelve un float, incluso con dos enteros (10 / 2 devuelve 5.0, no 5). Para la división entera usa //.

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

Funciones numéricas integradas

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

El módulo 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

La trampa del float

Los floats son aproximaciones binarias: 0.1 + 0.2 no es exactamente igual a 0.3.

Python
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ú

Ejercicio#python.m4.l3.e1
Intentos: 0Cargando...

Dado `seconds = 3725`, calcula `hours`, `minutes`, `remaining_seconds` usando // y %. Evalúa la tupla `(hours, minutes, remaining_seconds)`.

Cargando editor...
Mostrar pista

// hace la división entera, % obtiene el resto.

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#python.m4.l3.e2
Intentos: 0Cargando...

Dado `radius = 5`, calcula el área del círculo en `area` usando math.pi. Evalúa `area` redondeada a 2 decimales con round.

Cargando editor...
Mostrar pista

math.pi * radius ** 2

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#python.m4.l3.e3
Intentos: 0Cargando...

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.

Cargando editor...
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