18. Desafío

18.2. Otra resolución

#Resolución sin while True.
d={}#diccionario vacio
n=0
while n<=0:#valido N por tipo y positivo
    try:
        n=int(input("Ingrese cantidad de alumnos: "))       
    except ValueError:
        print("Error en tipo de dato...reingrese.")
    else:
        if n<0:
            print("Cantidad erronea, no puede ser negativa. Reingrese..")
        
for z in range(n):#una z para cada alumno
    nombre=input("Ingrese el nombre del alumno: ")
    l=[]#L es lista temporal se resetea para cada alumno
    for i in range(4):#un i para cada nota
        nota=-1
        while nota<0 or nota>10:
            try: #con un try/except/else valido las 4 notas.
                    nota=int(input(f"Ingrese la nota {i+1}: "))       
            except ValueError:
                    print("Error en tipo de dato...reingrese.")
            else:
                    if nota<0 or nota>10:
                        print("Nota fuera de rango. Reingrese..")
                        
                    else:
                        l.append(nota)
                
    d[nombre]=l #guardo los valores para esa clave.