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

Desafío: hora de practicar

Esta etapa me ayudó a comprender cómo manejar errores de forma más profesional en Python. Aprendí a usar try, except, else y finally para capturar y controlar distintos tipos de excepciones como ZeroDivisionError, KeyError, TypeError, ValueError e incluso crear mis propias excepciones personalizadas. Me pareció muy útil ver cómo anticipar errores comunes y dar mensajes claros al usuario, lo que hace que el código sea más robusto y confiable.

  1. División con manejo de errores
try:
    num1 = float(input("Ingrese el primer número: "))
    num2 = float(input("Ingrese el segundo número: "))
    resultado = num1 / num2
except ZeroDivisionError as e:
    print(type(e), "Error: No se puede dividir por cero.")
except ValueError as e:
    print(type(e), "Error: Entrada no válida. Ingrese solo números.")
else:
    print(f"Resultado de la división: {resultado}")
finally:
    print("Fin del programa.")
  1. Búsqueda en diccionario con KeyError
edades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}

try:
    nombre = input("Ingrese el nombre a buscar: ")
    edad = edades[nombre]
except KeyError:
    print("Nombre no encontrado")
else:
    print(f"{nombre} tiene {edad} años.")
  1. Conversión a flotantes con manejo de errores
def convertir_a_flotantes(lista):
    try:
        return [float(x) for x in lista]
    except Exception as e:
        print(type(e), f"Error: {e}")
    finally:
        print("Fin de la ejecución de la función.")

**Ejemplo**

print(convertir_a_flotantes(['1.5', '2.3', 'hola']))  # Provoca error
print(convertir_a_flotantes(['1.5', '2.3', '3.0']))    # Correcto
  1. Agrupar listas con manejo de errores
def agrupar_listas(l1, l2):
    try:
        if len(l1) != len(l2):
            raise IndexError("La cantidad de elementos en cada lista es diferente.")
        resultado = []
        for i in range(len(l1)):
            resultado.append((l1[i], l2[i], l1[i] + l2[i]))
        return resultado
    except Exception as e:
        print(type(e), f"Error: {e}")
        return []

**Pruebas**

lista1 = [4, 6, 7, 9, 10]
lista2 = [-4, 6, 8, 7, 9]
print(agrupar_listas(lista1, lista2))

lista1 = [4, 6, 7, 9, 10, 4]
lista2 = [-4, 6, 8, 7, 9]
print(agrupar_listas(lista1, lista2))

lista1 = [4, 6, 7, 9, 'A']
lista2 = [-4, 'E', 8, 7, 9]
print(agrupar_listas(lista1, lista2))
  1. Validación de respuestas de estudiantes
def calcular_notas(respuestas_correctas, pruebas):
    try:
        notas = []
        for prueba in pruebas:
            nota = 0
            for r, c in zip(prueba, respuestas_correctas):
                if r not in ['A', 'B', 'C', 'D']:
                    raise ValueError(f"La alternativa {r} no es una opción de alternativa válida")
                if r == c:
                    nota += 1
            notas.append(nota)
        return notas
    except ValueError as e:
        print(type(e), f"Error: {e}")

**Datos**

respuestas = ['D', 'A', 'B', 'C', 'A']
tests_sin_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'C', 'A'], ['D', 'B', 'A', 'C', 'A']]
tests_con_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'E', 'A'], ['D', 'B', 'A', 'C', 'A']]

print(calcular_notas(respuestas, tests_sin_ex))
print(calcular_notas(respuestas, tests_con_ex))
  1. Verificación de puntuación en palabras (NLP)
def verificar_puntuacion(lista_palabras):
    try:
        for palabra in lista_palabras:
            if any(p in palabra for p in [',', '.', '!', '?']):
                raise ValueError(f'El texto presenta puntuaciones en la palabra "{palabra}"')
        print("Texto limpio, sin puntuaciones.")
    except ValueError as e:
        print(type(e), f"Error: {e}")

**Pruebas**

lista_tratada = ['Python', 'es', 'un', 'lenguaje', 'de', 'programación', 'poderoso', 'versátil',
                 'y', 'fácil', 'de', 'aprender', 'utilizado', 'en', 'diversos', 'campos', 'desde',
                 'análisis', 'de', 'datos', 'hasta', 'inteligencia', 'artificial']

lista_no_tratada = ['Python', 'es', 'un', 'lenguaje', 'de', 'programación', 'poderoso,', 'versátil',
                    'y', 'fácil,', 'de', 'aprender', 'utilizado', 'en', 'diversos', 'campos,', 'desde',
                    'análisis', 'de', 'datos', 'hasta', 'inteligencia', 'artificial!']

verificar_puntuacion(lista_tratada)
verificar_puntuacion(lista_no_tratada)
1 respuesta

¡Hola! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

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