Domina los operadores aritméticos y de asignación en Python: guía práctica con ejemplos y precedencia
Introducción
En el día a día de cualquier proyecto de software, sea un script rápido o una aplicación empresarial, los operadores aritméticos y de asignación son la herramienta básica para manipular datos numéricos. Aunque su sintaxis es sencilla, entender cómo funcionan, cómo se combinan y cuál es su precedencia puede evitar bugs difíciles de detectar.
Este tutorial está pensado para:
- Desarrolladores junior que recién empiezan a programar en Python.
- Programadores de otros lenguajes que necesitan refrescar conceptos específicos de Python.
- Equipos que buscan establecer buenas prácticas al usar operadores en código productivo.
Al final de la lectura vas a poder:
- Identificar y usar correctamente los operadores
+ - * / % **. - Aplicar los operadores de asignación (
=,+=,-=,*=,/=,%=y**=) sin sorpresas. - Entender la precedencia de operadores y cómo usar paréntesis para controlar la evaluación.
- Evitar errores comunes que suelen aparecer al mezclar tipos de datos o al confiar en la precedencia implícita.
1. Operadores aritméticos básicos
| Operador | Significado | Ejemplo simple | Resultado |
|---|---|---|---|
+ |
Suma | 3 + 5 |
8 |
- |
Resta | 10 - 2 |
8 |
* |
Multiplicación | 4 * 7 |
28 |
/ |
División (float) | 9 / 2 |
4.5 |
% |
Módulo (resto) | 9 % 2 |
1 |
** |
Potencia | 3 ** 4 |
81 |
1.1 Suma y concatenación
En Python, el operador + también sirve para concatenar cadenas. Si intentás combinar un número y una cadena sin convertir explícitamente, obtendrás un TypeError.
# Suma de enteros
print('3 + 5 =', 3 + 5)
# Concatenación de strings
print('Hola' + ' ' + 'mundo')
# Error típico al mezclar tipos
try:
print('Resultado: ' + 10)
except TypeError as e:
print('Error:', e)Salida esperada
3 + 5 = 8
Hola mundo
Error: can only concatenate str (not "int") to str1.2 División y módulo
La división / siempre devuelve un float, incluso si la división es exacta. Para obtener un entero con parte entera, usá // (división entera). El operador % devuelve el resto de la división, útil para validar pares/impares o ciclos.
print('7 / 2 =', 7 / 2) # Float
print('7 // 2 =', 7 // 2) # Entero
print('7 % 2 =', 7 % 2) # RestoSalida esperada
7 / 2 = 3.5
7 // 2 = 3
7 % 2 = 11.3 Potencias
** eleva un número a la potencia indicada. Es asociativo a la derecha, lo que significa que 2 ** 3 ** 2 se evalúa como 2 ** (3 ** 2).
print('2 ** 3 =', 2 ** 3)
print('2 ** 3 ** 2 =', 2 ** 3 ** 2) # 2 ** (3 ** 2) = 2 ** 9 = 512Salida esperada
2 ** 3 = 8
2 ** 3 ** 2 = 5122. Operadores de asignación
Los operadores de asignación combinan una operación aritmética con la asignación a una variable, reduciendo código y mejorando legibilidad.
| Operador | Equivalente expandido |
|---|---|
= |
asignación simple |
+= |
a = a + expr |
-= |
a = a - expr |
*= |
a = a * expr |
/= |
a = a / expr |
//= |
a = a // expr |
%= |
a = a % expr |
**= |
a = a ** expr |
2.1 Uso práctico
valor = 10
print('Inicial:', valor)
valor += 5 # equivalente a valor = valor + 5
print('Después de += 5:', valor)
valor *= 2 # equivalente a valor = valor * 2
print('Después de *= 2:', valor)
valor **= 3 # potencia: valor = valor ** 3
print('Después de **= 3:', valor)Salida esperada
Inicial: 10
Después de += 5: 15
Después de *= 2: 30
Después de **= 3: 270002.2 Encadenamiento de asignaciones
Python permite encadenar asignaciones: a = b = 5 asigna el mismo valor a ambas variables.
a = b = 5
print('a =', a, 'b =', b)Salida esperada
a = 5 b = 53. Precedencia de operadores
La precedencia determina el orden en que se evalúan los operadores en una expresión sin paréntesis. En Python, el orden (de mayor a menor) es aproximadamente:
**+x,-x,~x(unario)*,/,//,%+,-- Operadores de asignación (
+=,-=, etc.)
3.1 Ejemplo de confusión típica
resultado = 3 + 4 * 2 ** 2
print('Resultado sin paréntesis:', resultado)
# Añadiendo paréntesis para cambiar la evaluación
resultado2 = (3 + 4) * 2 ** 2
print('Resultado con paréntesis:', resultado2)Salida esperada
Resultado sin paréntesis: 19
Resultado con paréntesis: 56Explicación
- En la primera línea,
2 ** 2= 4, luego4 * 4= 16, y finalmente3 + 16= 19. - En la segunda línea, los paréntesis hacen que
3 + 4= 7, luego7 * 4= 28, y finalmente28(no hay otro**fuera).
3.2 Prioridad de operadores de asignación
Los operadores de asignación tienen la menor precedencia. Por eso, la siguiente expresión es válida y se interpreta como se espera:
x = 5
x += 3 * 2
print('x después de += 3 * 2:', x)Salida esperada
x después de += 3 * 2: 11Primero se calcula 3 * 2 (6) y luego se suma a x.
4. Buenas prácticas y errores comunes
- Siempre usar paréntesis para claridad
- Incluso si la precedencia te favorece, colocar paréntesis hace que el código sea más legible para otros desarrolladores.
- Cuidar los tipos al usar
/- Si necesitás un entero, usá
//o conviértelo explícitamente conint().
- Si necesitás un entero, usá
- Evitar la mezcla implícita de tipos
- Concatenar strings y números sin conversión genera
TypeError. Usa f‑strings:f"Resultado: {valor}".
- Concatenar strings y números sin conversión genera
- No confundir
=con===asigna,==compara. Un error típico al escribir condicionales.
- Prefijar operadores unarios con claridad
-a ** bes diferente a(-a) ** b. El operador**tiene mayor precedencia que el-unario.
- No sobrescribir valores por accidente
- Cuando uses operadores de asignación dentro de bucles, revisá que la variable no se esté modificando más de lo necesario.
- Usar operadores de asignación compuestos sólo cuando la intención sea clara
- En expresiones complejas, escribir la asignación explícita puede evitar confusiones.
Conclusión
Los operadores aritméticos y de asignación son pilares del desarrollo en Python. Dominarlos implica conocer su sintaxis, su precedencia y aplicar buenas prácticas que reduzcan errores y mejoren la legibilidad del código. Recordá:
- Verificar la precedencia y usar paréntesis cuando haya duda.
- Emplear los operadores compuestos (
+=,*=…) para código conciso, pero sin sacrificar claridad. - Mantener la consistencia de tipos y convertir explícitamente cuando sea necesario.
Con los ejemplos y conceptos de este tutorial, ya podés escribir expresiones numéricas robustas y comprender rápidamente por qué una línea de código produce el resultado que muestra. El siguiente paso es aplicar estos operadores en tus propios proyectos: cálculos financieros, algoritmos de juego, procesamiento de datos, etc. ¡A programar con precisión!
DUGLAS MORENO
Comentarios (0)
Sé el primero en comentar.