Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
svenvanzijl
573 Points¿Por qué imprime A, D, F?
No entiendo por qué imprime A, D, F?
print(A)
try:
resultado = test + 5
print(B)
except ValueError:
print(C)
except TypeError:
print(D)
else:
print(E)
print(F)
2 Respuestas
Steven Parker
244 163 puntosComo conoces la respuesta, deberías haber visto esta explicación cuando la seleccionaste en el cuestionario: "Agregar una cadena y un entero genera un TypeError. Como ocurrió una excepción, el bloque else no se ejecuta."
Si convertimos esa explicación en comentarios línea por línea:
print(A) # esto imprime la "A"
try:
resultado = test + 5 # agregar una cadena y un entero genera un TypeError
print(B) # por lo que esta línea se omite
except ValueError: # esta línea también se omite
print(C) # esta línea también se omite
except TypeError: # el código reanuda la ejecución aquí
print(D) # esto imprime la "D"
else: # como ocurrió una excepción, el bloque else no se ejecuta
print(E) # por lo que esta línea se omite
print(F) # finalmente, esto imprime la "F"
Rick Gleitz
48,549 PointsHola Svenvanzijl,
A y F se van a imprimir de todas formas porque están fuera de la porción try/except/else del código. Las otras opciones están dentro de la parte try/except/else, así que lo único que hay que averiguar es cuál es. Si el valor de la variable result fuera válido, también imprimiría B (no es válido). ValueError, según tengo entendido, es principalmente para capturar cosas que normalmente no tienen sentido matemático, como calcular la raíz cuadrada de un número negativo, que no es lo que tenemos aquí, así que no imprime C. Sí imprime D porque result intenta agregar dos cosas que son tipos no coincidentes (un entero y una cadena). Finalmente, no imprime E porque sí capturó un error. Así que imprime A, D, F.
Espero que esto te ayude.