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 éxitoPaso a paso
try:— Python entra en el bloque protegido.x = int('5')— Convierte el string'5'a entero. La conversión es exitosa:x = 5. No se lanza ninguna excepción.except ValueError:— Como no hubo excepción, este bloque se omite completamente.else:— Como eltryterminó sin errores, Python entra en el bloqueelse.x = x * 2— Se calcula5 * 2 = 10. Ahorax = 10.print(x)— Se imprime10.
📥 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 recursosPrueba 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.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
