10: print("Datos inválidos. Intenta de nuevo.") else: nuevo_estudiante = { "> 10: print("Datos inválidos. Intenta de nuevo.") else: nuevo_estudiante = { "> 10: print("Datos inválidos. Intenta de nuevo.") else: nuevo_estudiante = { ">
estudiantes = []

while True:
    print("\n--- SISTEMA DE GESTIÓN DE ESTUDIANTES ---")
	    print("1. Registrar nuevo estudiante")
	    print("2. Mostrar todos los estudiantes")
	    print("3. Calcular promedio general")
	    print("4. Buscar estudiante por nombre")
	    print("5. Mostrar estudiantes con nota mayor al promedio")
	    print("6. Mostrar mejor y peor nota")
	    print("7. Eliminar estudiante por nombre")
    print("8. Salir")
++
    opcion = input("Elige una opción: ")

    match opcion:
        case "1":
            nombre = input("Nombre del estudiante: ")
            try:
                edad = int(input("Edad: "))
                nota = float(input("Nota (0-10): "))
            except ValueError:
                print("Edad o nota inválidas. Intenta de nuevo.")
                continue

            if edad <= 0 or nota < 0 or nota > 10:
                print("Datos inválidos. Intenta de nuevo.")
            else:
                nuevo_estudiante = {
                    "nombre": nombre,
                    "edad": edad,
                    "nota": nota
                }
                estudiantes.append(nuevo_estudiante)
                print(f"Estudiante {nombre} registrado con éxito.")

        case "2":
            if not estudiantes:
                print("No hay estudiantes registrados aún.")
            else:
                print("\nEstudiantes registrados:")
                print("-------------------------")
                for i, estudiante in enumerate(estudiantes, 1):
                    print(f"{i}. Nombre: {estudiante['nombre']}")
                    print(f"   Edad: {estudiante['edad']}")
                    print(f"   Nota: {estudiante['nota']}")
                    print("-------------------------")

        case "3":
            if not estudiantes:
                print("No hay estudiantes registrados.")
            else:
                suma_notas = sum(e["nota"] for e in estudiantes)
                promedio = suma_notas / len(estudiantes)
                print(f"El promedio general de notas es: {promedio:.2f}")

        case "4":
            nombre_buscado = input("Introduce el nombre del estudiante a buscar: ")
            encontrado = False
            for estudiante in estudiantes:
                if estudiante["nombre"].lower() == nombre_buscado.lower():
                    print("\nEstudiante encontrado:")
                    print(f"Nombre: {estudiante['nombre']}")
                    print(f"Edad: {estudiante['edad']}")
                    print(f"Nota: {estudiante['nota']}")
                    encontrado = True
                    break
            if not encontrado:
                print("Estudiante no encontrado.")

        case "5":
            if not estudiantes:
                print("No hay estudiantes registrados para calcular el promedio.")
            else:
                suma_notas = sum(e["nota"] for e in estudiantes)
                promedio = suma_notas / len(estudiantes)
                
                print(f"\nEstudiantes con nota mayor al promedio ({promedio:.2f}):")
                for estudiante in estudiantes:
                    if estudiante['nota'] > promedio:
                        print(f"Nombre: {estudiante['nombre']}, Nota: {estudiante['nota']}")

        case "6":
            if not estudiantes:
                print("No hay estudiantes para encontrar las notas.")
            else:
                mejor_nota = max(estudiantes, key=lambda x: x['nota'])
                peor_nota = min(estudiantes, key=lambda x: x['nota'])
                print(f"\nMejor nota: {mejor_nota['nota']} ({mejor_nota['nombre']})")
                print(f"Peor nota: {peor_nota['nota']} ({peor_nota['nombre']})")
        
        case "7":
            if not estudiantes:
                print("No hay estudiantes para eliminar.")
            else:
                nombre_eliminar = input("Introduce el nombre del estudiante a eliminar: ")
                encontrado = False
                for estudiante in estudiantes:
                    if estudiante['nombre'].lower() == nombre_eliminar.lower():
                        estudiantes.remove(estudiante)
                        encontrado = True
                        print(f"Estudiante {nombre_eliminar} eliminado.")
                        break
                if not encontrado:
                    print("Estudiante no encontrado.")

        case "8":
            print("Saliendo del programa...")
            break

        case _:
            print("Opción no válida. Intenta otra vez.")