Diccionarios
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.