Evaluación 02
1 Instrucciones
2 Primera Parte
Solución
EVA2_MoralesAntonio_Vespertino.py
= 1 #num random distinto de 4
op while op != 4:
print('-----------------------------------------------------------------------------')
print('1.Iniciar Registro | 2.Consultar Estudiante | 3.Eliminar Estudiante | 4.Salir')
print('-----------------------------------------------------------------------------')
= int(input('Ingrese una opción: '))
op
if op == 1:
= input('Ingrese Rut del Estudiante: ')
rut = 'SI'
op2 = []
ASIG_MoralesAntonio = {}
DIC_MoralesAntonio = {}
Total_MoralesAntonio = 0
sumaProm = 0
contProm
while (op2 == 'SI'):
= input('Ingrese Asignatura: ')
asig
= 0
cont = 0
suma = -1
nota while (nota != 0):
= float(input('Ingrese nota: '))
nota if (nota >= 1.0) and (nota <= 7.0):
= suma + nota
suma = cont + 1
cont else:
print('Error Ingrese nota nuevamente')
= suma / cont
promedio = sumaProm + promedio
sumaProm = contProm + 1
contProm
ASIG_MoralesAntonio.append(asig)= input('Desea agregar otra Asignatura(SI/NO): ')
op2
= sumaProm / contProm
promedio_general
Total_MoralesAntonio.setdefault(rut,promedio_general)
DIC_MoralesAntonio.setdefault(rut,ASIG_MoralesAntonio)
#print para corroborar resultados
print(f'DIC_MoralesAntonio: {DIC_MoralesAntonio}')
print(f'promedio_general: {promedio_general}')
print(f'Total_MoralesAntonio: {Total_MoralesAntonio}')
if op == 2:
pass
if op == 3:
pass
if op == 4:
pass
3 Segunda Parte
Solución
EVA2_MoralesAntonio_Vespertino.py
from EVA2Func_MoralesAntonio import *
= {}
DIC_MoralesAntonio = {}
Total_MoralesAntonio = 1 #num random distinto de 4
op while op != 4:
mostrarMenu()try:
= int(input('Seleccione Opción: '))
op
if op == 1:
# Validación a. Valida el rut ingresado como string, mediante funcion validarRut()
# Validación b. Si el rut es menor a 10 millones, se agregan 0s hasta completar 8 digitos
print()
= input('Ingrese Rut del Estudiante: ')
rut = validarRut(rut)
rutValido # Validacion c. Si rut no es valido imprime 'El rut NO es válido'
if not rutValido:
print('El rut NO es válido')
else:
= []
ASIG_MoralesAntonio
= 0
sumaProms = 0
cantProms ='SI'
otraAsigwhile (otraAsig == 'SI'):
= input('Ingrese Nombre Asignatura: ')
asig
ASIG_MoralesAntonio.append(asig)
= 0
cantNotas = 0
sumaNotas = -1
nota while (nota != 0):
try:
= float(input('Ingrese Nota: '))
nota if validarNota(nota):
= acumVars(nota,sumaNotas,cantNotas)
sumaNotas,cantNotas elif (nota != 0):
print('Error Ingrese Nota nuevamente')
except ValueError:
print('Error Ingrese Nota nuevamente')
= sumaNotas / cantNotas
promNotas = acumVars(promNotas,sumaProms,cantProms)
sumaProms,cantProms
mostrarAsig(asig,promNotas)
= input('Desea agregar otra Asignatura (SI/NO): ').upper()
otraAsig
= sumaProms / cantProms
promedio_general
DIC_MoralesAntonio.setdefault(rut,ASIG_MoralesAntonio)
Total_MoralesAntonio.setdefault(rut,promedio_general)
elif op == 2:
print()
= input('Ingrese rut a consultar: ')
rut if rut in DIC_MoralesAntonio.keys():
mostrarEstudiante(rut,DIC_MoralesAntonio,Total_MoralesAntonio)else:
print('El Estudiante consultado no se encuentra registrado')
elif op == 3:
= input('Ingrese rut a Eliminar: ')
rut if rut in DIC_MoralesAntonio.keys():
eliminarEstudiante(rut,DIC_MoralesAntonio,Total_MoralesAntonio)else:
print('El Estudiante a eliminar no se encuentra registrado')
elif op == 4:
print('Sesión Finalizada')
else:
print('Error. Opción no válida')
except ValueError:
print('Error. Opción no válida')
EVA2Func_MoralesAntonio.py
def mostrarMenu():
print()
print('1.Iniciar Registro 2.Consultar Estudiante 3.Eliminar Estudiante 4.Salir')
def validarNota(nota):
if (nota >= 1.0) and (nota <= 7.0):
= True
result else:
= False
result return result
def acumVars(var,sumaVars,cantVars):
= sumaVars + var
sumaVars = cantVars + 1
cantVars return sumaVars,cantVars
def estadoAsig(promedio):
if (promedio > 5.0):
= 'APRUEBA ASIGNATURA'
estado elif (promedio < 4.0):
= 'REPRUEBA ASIGNATURA'
estado else:
= 'DEBE RENDIR EXAMEN'
estado return estado
def mostrarAsig(asig,promNotas):
print()
print(f'Promedio Asignatura \'{asig}\': {promNotas}')
print(estadoAsig(promNotas))
print()
def mostrarDiccionario(nombre,dic):
print()
print(f'Diccionario \'{nombre}\'')
print(14*'-' + len(nombre)*'-')
for i,j in dic.items():
print(f'{i}: {j}')
def mostrarEstudiante(rut,dic,total):
print()
print(f'El Estudiante rut {rut} registra las siguiente asignaturas:',end=' ')
for index,asig in enumerate(dic[rut]):
if index < len(dic[rut])-1:
print(asig,end=', ')
else:
print(asig)
print(f'El promedio general de todas las asignaturas es: {total[rut]}')
def eliminarEstudiante(rut,dic,total):
del dic[rut]
del total[rut]
print()
print(f'Estudiante \'{rut}\' eliminado')
def validarRut(rut):
= rut[-1].upper()
ultDigito = rut[:-2].zfill(8)
rut sum = 0
for i,j in zip(rut,'32765432'):
sum = sum + (int(i) * int(j))
= (sum/11) - int(sum/11)
decimal = round(11-(11*decimal))
digito = 'K' if (digito == 10) else 0 if (digito == 11) else digito
digito return True if (str(digito) == ultDigito) else False