Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafio

1 - Solicita dos números decimales, realiza la división e informa el resultado o el tipo de error (ValueError, ZeroDivisionError).

try:
    a_str = input("Ingrese el primer número decimal: ")
    b_str = input("Ingrese el segundo número decimal: ")
    a = float(a_str)
    b = float(b_str)
    resultado = a / b
except ValueError as e:
    print(f"Error de valor: no se pudo convertir a decimal ({type(e).__name__})")
except ZeroDivisionError as e:
    print(f"Error de división: no es posible dividir por cero ({type(e).__name__})")
else:
    print(f"Resultado de {a} / {b} = {resultado}")
finally:
    print("Fin de la operación de división.\n")

2 - Busca una clave en un diccionario y maneja KeyError

edades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}
nombre = input("Ingrese un nombre a buscar en el diccionario: ")
try:
    valor = edades[nombre]
except KeyError:
    print("Nombre no encontrado")
else:
    print(f"{nombre} tiene {valor} años")
finally:
    print("Búsqueda finalizada.\n")

3 - Convierte todos los elementos de una lista a float. Muestra el tipo de error si ocurre y siempre imprime 'Fin de la ejecución de la función'.

try:
    resultado = [float(x) for x in lista]
    return resultado
except Exception as e:
    print(f"Error: {type(e).__name__}")
finally:
    print("Fin de la ejecución de la función.\n")

4 - Agrupa dos listas en tuplas (x, y, x+y). Si tienen distinto tamaño, arroja IndexError con mensaje específico. Captura otros errores y muestra su tipo.

try:
    if len(lista1) != len(lista2):
        raise IndexError("La cantidad de elementos en cada lista es diferente.")
    resultado = []
    for i in range(len(lista1)):
        x = lista1[i]
        y = lista2[i]
        suma = x + y
        resultado.append((x, y, suma))
    return resultado
except IndexError as e:
    # Propaga el IndexError con el mensaje requerido
    raise
except Exception as e:
    print(f"Error: {type(e).__name__}")

5 - Recibe una lista de tests (listas de respuestas) y calcula la nota según respuestas_correctas. Lanza ValueError si aparece alternativa inválida. Retorna lista de puntajes si todo es válido.

respuestas_correctas = ['D', 'A', 'B', 'C', 'A']
validas = {'A', 'B', 'C', 'D'}
puntajes = []

for test in tests:
    for alt in test:
        if alt not in validas:
            raise ValueError(f"La alternativa {alt} no es una opción de alternativa válida")
    # si todas válidas, calculamos puntaje
    score = sum(int(alt == corr)
                for alt, corr in zip(test, respuestas_correctas))
    puntajes.append(score)

return puntajes

6 - Verifica que ninguna palabra contenga ',', '.', '!' o '?'. Si encuentra alguna, lanza ValueError.

signos = {',', '.', '!', '?'}
for palabra in lista_palabras:
    if any(s in palabra for s in signos):
        raise ValueError(f'El texto presenta puntuaciones en la palabra "{palabra}"')
print("Lista verificada: no contiene puntuación.\n")
1 respuesta

Hola , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartetucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios