Domina los operadores aritméticos y de asignación en Python: guía práctica con ejemplos y precedencia

DUGLAS MORENODUGLAS MORENO 👁 22
🎧 Escuchá el resumen · 1:05

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:

  1. Identificar y usar correctamente los operadores + - * / % **.
  2. Aplicar los operadores de asignación (=, +=, -=, *=, /=, %= y **=) sin sorpresas.
  3. Entender la precedencia de operadores y cómo usar paréntesis para controlar la evaluación.
  4. 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 str

1.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)      # Resto

Salida esperada

7 / 2 = 3.5
7 // 2 = 3
7 % 2 = 1

1.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 = 512

Salida esperada

2 ** 3 = 8
2 ** 3 ** 2 = 512

2. 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: 27000

2.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 = 5

3. 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:

  1. **
  2. +x, -x, ~x (unario)
  3. *, /, //, %
  4. +, -
  5. 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: 56

Explicación

  • En la primera línea, 2 ** 2 = 4, luego 4 * 4 = 16, y finalmente 3 + 16 = 19.
  • En la segunda línea, los paréntesis hacen que 3 + 4 = 7, luego 7 * 4 = 28, y finalmente 28 (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: 11

Primero se calcula 3 * 2 (6) y luego se suma a x.


4. Buenas prácticas y errores comunes

  1. 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.
  2. Cuidar los tipos al usar /
    • Si necesitás un entero, usá // o conviértelo explícitamente con int().
  3. Evitar la mezcla implícita de tipos
    • Concatenar strings y números sin conversión genera TypeError. Usa f‑strings: f"Resultado: {valor}".
  4. No confundir = con ==
    • = asigna, == compara. Un error típico al escribir condicionales.
  5. Prefijar operadores unarios con claridad
    • -a ** b es diferente a (-a) ** b. El operador ** tiene mayor precedencia que el - unario.
  6. 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.
  7. 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!

Comentarios (0)

Sé el primero en comentar.

Dejá tu comentario