Operadores Matemáticos

Fig. 6.2: precio * cantidad produce total.
El Almacén Digital trae una calculadora integrada. Y no, no necesitas ser bueno en matemáticas: Python hace las cuentas.
La Calculadora del Almacén
Piensa en cajas con números. Estos operadores te permiten combinarlas y obtener una caja nueva con el resultado.
| Operador | Nombre | Ejemplo | Resultado | Descripción |
|---|---|---|---|---|
+ | Suma | 10 + 5 | 15 | Junta dos cantidades. |
- | Resta | 10 - 5 | 5 | Quita una cantidad de otra. |
* | Multiplicación | 10 * 5 | 50 | Repite una cantidad varias veces. |
/ | División | 10 / 2 | 5.0 | Reparte equitativamente (Siempre devuelve decimal). |
// | División Entera | 10 // 3 | 3 | Reparte pero ignora lo que sobra (Solo cajas completas). |
% | Módulo (Resto) | 10 % 3 | 1 | Te dice solo lo que sobró de la división. |
** | Potencia | 2 ** 3 | 8 | Multiplica un número por sí mismo las veces indicadas (2 ** 3 = 2 × 2 × 2). |
Antes de seguir, prueba con otros números: ¿qué crees que imprime cada línea?
print(17 / 5)
print(17 // 5)
La división normal siempre da decimal (3.4); la entera se queda solo con la parte completa (3), sin redondear.
Ejemplo Real
precio_unitario = 55
cantidad = 3
impuesto = 1.16 # 16% de IVA
# Cálculo secuencial
subtotal = precio_unitario * cantidad
total_final = subtotal * impuesto
print(f"Total a pagar: ${total_final:.2f}")
Ese :.2f del print está ahí para protegerte. Si imprimes total_final a secas verás $191.39999999999998, y no es un error tuyo: los float guardan los decimales en binario, y algunos números (prueba 0.1 + 0.2 en el REPL) no tienen representación exacta. La báscula del almacén es finísima pero no perfecta. Regla práctica: calcula con todos los decimales y redondea solo al mostrar, con el :.2f que conociste en el Capítulo 4.
El Accidente Anunciado: División entre Cero
Hay una operación que la maquinaria se niega a hacer:
piezas = 100
cajas = 0
print(piezas / cajas)
# ZeroDivisionError: division by zero
Repartir 100 piezas entre cero cajas no tiene respuesta, y Python detiene el programa en seco con un ZeroDivisionError. Grábate el nombre: en el Capítulo 10 aprenderás a atrapar estos accidentes sin que tumben el sistema. Mientras tanto, la defensa es no dividir sin revisar el divisor.
Bonus: + y * También Cargan Texto
Los mismos símbolos operan sobre cadenas y listas, con otro significado:
separador = "-" * 20 # repite: "--------------------"
etiqueta = "PRD" + "-" + "101" # pega: "PRD-101"
estante = ["Martillo"] + ["Sierra"] # une estantes (lo viste en el Cap. 5)
print(separador)
print(etiqueta)
print(estante)
Mismos operadores, distinta mercancía. Python decide qué hacer según el tipo de las cajas: números se suman, textos se pegan, listas se unen. Mezclarlos ("PRD" + 101) lanza TypeError; para eso existe el casting del Capítulo 4.