1 - Haz un programa que solicite a la persona usuaria ingresar dos números decimales y calcular la división entre estos números. El código debe incluir un manejo de error, indicando el tipo de error que se generó si la división no es posible.
Prueba el programa con el segundo valor numérico de la entrada igual a 0. También prueba usando caracteres textuales en la entrada para verificar los tipos de errores que ocurren.
def calcular_division_segura():
print("--- Calculadora de División Segura ---")
try:
num1_str = input("Ingrese el primer número (dividendo): ")
num1 = float(num1_str)
num2_str = input("Ingrese el segundo número (divisor): ")
num2 = float(num2_str)
except ValueError:
print("\n ¡Error de Tipo de Dato (ValueError)!.")
print(f"El valor '{num1_str}' o '{num2_str}' no es un número decimal válido.")
return
try:
resultado = num1 / num2
print("\n Operación Exitosa.")
print(f"El resultado de {num1} dividido por {num2} es: {resultado}")
except ZeroDivisionError:
print("\n ¡Error Matemático (ZeroDivisionError)!.")
print("No es posible realizar una división por cero.")
print("El divisor debe ser un número diferente de cero.")
except Exception as e:
print(f"\nSe generó un error inesperado: {type(e).__name__}.")
print(f"Detalles: {e}")
calcular_division_segura()
2 - Haz un programa que solicite a la persona usuaria ingresar un texto que será una clave a buscar en el siguiente diccionario: edades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}, almacenando el resultado del valor en una variable. El código debe incluir un manejo de error KeyError, imprimiendo la información 'Nombre no encontrado' en caso de error, e imprimir el valor si no ocurre ninguno.
Prueba el programa con un nombre presente en una de las claves del diccionario y con uno que no esté en el diccionario para verificar el mensaje de error.
def buscar_clave_en_diccionario():
edades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}
print("--- Buscador de Edad por Nombre ---")
print("Nombres disponibles:", list(edades.keys()))
clave_a_buscar = input("Ingrese un nombre para buscar su edad: ")
try:
valor_encontrado = edades[clave_a_buscar]
print(f"\n ¡Clave encontrada!")
print(f"El valor de la edad para '{clave_a_buscar}' es: {valor_encontrado}")
except KeyError:
print("\n ¡Error de Clave (KeyError)!")
print("Nombre no encontrado")
else:
pass
buscar_clave_en_diccionario()
3 - Crea una función que reciba una lista como parámetro y convierta todos los valores de la lista a flotantes. La función debe incluir un manejo de error indicando el tipo de error generado y devolver la lista si no ha ocurrido ningún error. Por último, debe tener la cláusula finally para imprimir el texto: 'Fin de la ejecución de la función'.
def convertir_lista_a_flotantes(lista_original):
print(f"Lista original recibida: {lista_original}")
lista_flotantes = []
try:
for elemento in lista_original:
float_elemento = float(elemento)
lista_flotantes.append(float_elemento)
return lista_flotantes
except ValueError:
print("\n❌ ¡Error de Conversión (ValueError)!.")
print(f"Uno o más elementos de la lista no se pudieron convertir a número decimal (float).")
return None
finally:
print('\n--- Fin de la ejecución de la función ---')
print(">>> PRUEBA 1: Conversión Exitosa <<<")
lista_buena = [1, '2.5', 3, '40', 5.0]
resultado_bueno = convertir_lista_a_flotantes(lista_buena)
if resultado_bueno is not None:
print(f"Resultado después de la conversión: {resultado_bueno}")
print(f"Tipo de los elementos: {type(resultado_bueno[0])}")
print("\n" + "="*50 + "\n")
print(">>> PRUEBA 2: Conversión Fallida <<<")
lista_mala = [10, 20, 'tres', 40.5]
resultado_malo = convertir_lista_a_flotantes(lista_mala)
if resultado_malo is None:
print("La función devolvió 'None' debido al error.")