Ejercicio 06 — Pide dos enteros, los intercambia e imprime valores antes y después

Dificultad: amarillo · Módulo 01 (Variables, tipos y entrada/salida)

Enunciado

Pide dos enteros, los intercambia e imprime valores antes y después

Cómo se resuelve

Intercambiar el valor de dos variables es donde Python enseña un truco que en C exige una variable temporal.

  1. a = int(input("Valor de a: ")) y su gemelo para b — leemos los dos enteros convirtiendo el texto con int().
  2. print(f"Antes: a={a} b={b}") — mostramos el estado inicial para poder comparar. Dentro de la f-string cada {a} y {b} se sustituye por su valor.
  3. a, b = b, a — esta es la clave. Python evalúa primero todo el lado derecho (b, a) formando una pareja de valores en memoria, y solo después la reparte sobre el lado izquierdo. Por eso a recibe el antiguo b y b el antiguo a de golpe, sin pisarse.
  4. En C tendrías que hacer tmp = a; a = b; b = tmp; porque la asignación es de uno en uno; aquí la asignación múltiple lo resuelve en una línea.
  5. El segundo print muestra los valores ya intercambiados.

Trampa habitual: creer que a = b seguido de b = a sirve. No: tras a = b el valor original de a ya se ha perdido, y b acabaría con el valor de b. La asignación simultánea a, b = b, a es lo que lo evita.

Para practicar — cópialo y complétalo

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

# Curso de Python — Modulo 01: Variables, tipos y E/S
# Ejercicio 06 — PRACTICA (rellena los TODO)
# Enunciado: Pide dos enteros, los intercambia e imprime valores antes y después
# Dificultad: amarillo
# Ejecutar: python3 ej06_practica.py
 
# TODO: pide el valor de a con input() y convierte a int
a = ...
 
# TODO: pide el valor de b con input() y convierte a int
b = ...
 
# TODO: imprime "Antes: a=<a>  b=<b>"
...
 
# TODO: intercambia a y b en UNA sola linea (sin variable auxiliar)
# Pista: Python permite  a, b = b, a
...
 
# TODO: imprime "Despues: a=<a>  b=<b>"
...

Solución — cópiala y ejecútala

# Curso de Python — Modulo 01: Variables, tipos y E/S
# Ejercicio 06 — MODELO (resuelto)
# Enunciado: Pide dos enteros, los intercambia e imprime valores antes y después
# Dificultad: amarillo
# Ejecutar: python3 ej06_modelo.py
 
a = int(input("Valor de a: "))
b = int(input("Valor de b: "))
 
print(f"Antes:  a={a}  b={b}")
 
# Python evalua el lado derecho completo antes de asignar:
# no necesita variable temporal como en C (tmp = a; a = b; b = tmp;)
a, b = b, a
 
print(f"Despues: a={a}  b={b}")

Cómo usarlo

Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.

Conexiones