PyQuiz 32 - try/except/else en Python | Quiz interactivo

PyQuiz 32 – try/except/else en Python

El reto

try:
    x = int('5')
except ValueError:
    x = 0
else:
    x = x * 2
print(x)

¿Cuál es el resultado?

  • a) 10
  • b) 5
  • c) 0

Piensa tu respuesta antes de seguir leyendo…


Concepto: try/except/else

El bloque try/except/else amplía el manejo de excepciones con una cláusula else que se ejecuta únicamente si no se produjo ninguna excepción en el bloque try. Es la forma correcta de separar el código que puede fallar del código que depende de que no haya fallado.

El flujo es: si el try lanza una excepción, se ejecuta el except correspondiente y el else se omite. Si el try termina sin errores, el except se omite y el else se ejecuta. Esto es más limpio que poner todo dentro del try, porque evita capturar accidentalmente excepciones del código de éxito.

try:
    resultado = int(entrada)  # puede fallar
except ValueError:
    print('No es un número')  # solo si falla
else:
    print(f'El doble es {resultado * 2}')  # solo si tuvo éxito

Paso a paso

  1. try: — Python entra en el bloque protegido.
  2. x = int('5') — Convierte el string '5' a entero. La conversión es exitosa: x = 5. No se lanza ninguna excepción.
  3. except ValueError: — Como no hubo excepción, este bloque se omite completamente.
  4. else: — Como el try terminó sin errores, Python entra en el bloque else.
  5. x = x * 2 — Se calcula 5 * 2 = 10. Ahora x = 10.
  6. print(x) — Se imprime 10.

📥 Llévate el cheatsheet de Python (gratis)

PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.

Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.

Solución

Respuesta correcta: A) 10

int('5') no lanza error. El bloque else se ejecuta cuando NO hay excepción: x = 5 * 2 = 10.

Sabías que…

Existe también la cláusula finally, que se ejecuta siempre, tanto si hubo excepción como si no. El orden completo es try → except → else → finally:

try:
    archivo = open('datos.txt')
except FileNotFoundError:
    print('Archivo no encontrado')
else:
    contenido = archivo.read()
    print('Leído con éxito')
finally:
    print('Esto siempre se ejecuta')  # ideal para limpiar recursos

Prueba tú mismo

¿Qué imprimiría el mismo código si cambiamos int('5') por int('hola')? ¿Cuál sería el valor final de x?


Más PyQuizzes en elpythonista.com/pyquizzes

Tutorial relacionado: Try except y excepciones

¿Quieres aprender Python en orden, no a saltos?

Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir