streakode

Python 3.14

Ejercicios de Python sobre Excepciones

6 ejercicios de Excepciones en Python. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.

  1. 1 · Elige la respuesta · nivel 1

    ¿Qué imprime este código?

    try:    n = int("abc")except ValueError:    print("no es un número")
    • Ano es un número
    • B0
    • Cabc
    • DNada: el programa se detiene con un traceback
    Ver la respuesta

    Respuesta: A. no es un número

    int("abc") lanza ValueError, y el except de ese tipo lo captura: el programa sigue y se ejecuta su bloque. Sin el try, el error terminaría el programa.

  2. 2 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    def f():    try:        return "try"    finally:        print("finally") print(f())
    • Afinally try
    • Btry finally
    • Ctry
    • Dfinally
    Ver la respuesta

    Respuesta: A. finally try

    finally se ejecuta siempre antes de salir de la función, incluso con return. El valor "try" ya está decidido y se devuelve después, así que el print exterior va segundo.

  3. 3 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    data = {"a": 1}try:    print(data["b"])except KeyError:    print("falta la clave")except Exception:    print("otro error")
    • Afalta la clave
    • Botro error
    • Cfalta la clave otro error
    • DNone
    Ver la respuesta

    Respuesta: A. falta la clave

    Python prueba los except de arriba abajo y ejecuta solo el primero que encaja. KeyError encaja en el primero, así que el segundo, aunque también sirva (KeyError es una Exception), no llega a ejecutarse.

  4. 4 · Elige la respuesta · nivel 2

    ¿Qué imprime este código?

    def check(age):    if age < 0:        raise ValueError("edad negativa")    return age try:    check(-1)except ValueError as e:    print(e)
    • Aedad negativa
    • BValueError
    • C-1
    • DNone
    Ver la respuesta

    Respuesta: A. edad negativa

    raise lanza la excepción con su mensaje, y `as e` la guarda en e. Al imprimir una excepción se muestra su mensaje, no el nombre de su tipo.

  5. 5 · Encuentra el fallo · nivel 2

    Debería imprimir 0 al dividir entre cero, pero el programa se detiene con un error. ¿Qué línea tiene el fallo?

    1def divide(a, b):2    try:3        return a / b4    except ValueError:5        return 06 7print(divide(4, 0))
    Ver la respuesta

    El fallo está en la línea 4: except ValueError: Se arregla con except ZeroDivisionError:.

    Dividir entre cero lanza ZeroDivisionError, no ValueError. Un except solo captura los errores de su tipo (o de sus subclases): hay que nombrar el que realmente puede ocurrir.

  6. 6 · Ordena las líneas · nivel 2

    Ordena la función parse, que devuelve el doble del número o None si el texto no es un número, y después la línea que la prueba.

    • return None
    • return value * 2
    • value = int(text)
    • catch ValueError:
    • else:
    • except ValueError:
    • try:
    • def parse(text):
    • print(parse("21"), parse("x"))
    Ver la respuesta

    El orden correcto:

    def parse(text):    try:        value = int(text)    except ValueError:        return None    else:        return value * 2print(parse("21"), parse("x"))

    Sobran: catch ValueError:

    El bloque else de un try solo se ejecuta si no hubo excepción. Así el try protege únicamente la línea que puede fallar. En Python se escribe except, no catch.

Más temas de Python

Ver toda la ruta de Python