18. Desafío

18.1. Resolución

Se quieren cargar las notas de 4 parciales de alumnos de una materia.

Al momento de ejecutar el programa se sabe la cantidad de alumnos.

( para el docente: se ingresa por teclado un entero N. se usa while/try/except para este ingreso, N y N>0 , que será la cantidad claves/valores de alumnos cuyo nombre es la clave y como valores tiene una lista con 4 elementos).


D={}#diccionario vacio
while True:#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..") 
        else:
            break #N correcto, finalizo 1er While


Se cargan los N nombres y para cada nombre 4 notas que deben estar en el [0,10], si el valor no corresponde al intervalo indicado se pide reingreso SOLO para la nota que no está en el [0,10].

Si existe un error de tipo, también se pide reingreso.

Solo se puede usar un try/except para la validación del tipo en la Nota.

(esto es para que usen un for N y dentro del for 4 un while, con un try/except/else… algo así)


for z in range(N):#una z para cada alumno
    while True:
        nombre=input("Ingrese el nombre del alumno: ")
        if nombre in D:
            print("Ese nombre ya existe..reingrese")
       else:
            break
    L=[]#L es lista temporal se resetea para cada alumno
    for i in range(4):#un i para cada nota
        while True:
            try: #con un try/except/else valido las 4 notas.
                nota=float(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)
                    break #salgo del while sigo en el for

    D[nombre]=L #guardo los valores para esa clave.