Ejercicio: 3Eva_IT2017_T1 Archivos de notas por semestre
Propuesta de solución en Python:
Para la prueba del algoritmo, se requiere los archivos:
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL # 3Eva_IT2017_T1 Archivos de notas por semestre # Tarea: una vez comprendido los pasos, # simplificar de ser posible import numpy as np def academico(narchivos): notas = {} n = len(narchivos) for i in range(0,n,1): archivo = open(narchivos[i],'r') # semestre en el nombre nombre = narchivos[i] partes = nombre.split('.') semestre = partes[0][6:] # Datos del archivo linea = archivo.readline() while not(linea==''): linea = linea.strip('\n') partes = linea.split(',') quien = int(partes[0]) materia = partes[1] nota1 = int(partes[2]) nota2 = int(partes[3]) nota3 = int(partes[4]) estado = partes[5] califica = (materia,nota1,nota2, nota3,estado) # Revisar estudiante creado estudiantes = notas.keys() if not(quien in estudiantes): notas[quien] = {semestre:[califica]} else: cuando = notas[quien].keys() if (semestre in cuando): notas[quien][semestre].append(califica) else: notas[quien][semestre] = [califica] linea = archivo.readline() archivo.close() return(notas) def semestres(notas,matricula): estudiantes = notas.keys() cuando = () if (matricula in estudiantes): cuando = notas[matricula].keys() cuando = tuple(cuando) return(cuando) def nota_academico(notas,matricula,materia): califica = [] estudiantes = notas.keys() # Desarrollar tarea return(nota_final) def mas_aprobados(notas,semestre): # Separa dictadas y aprobadas en el semestre dictadas = [] estudiantes = notas.keys() for quien in estudiantes: cuando = notas[quien].keys() if (semestre in cuando): registradas = notas[quien][semestre] n = len(registradas) for i in range(0,n,1): if (registradas[i][4] == 'AP'): dictadas.append(registradas[i][0]) # Cuenta las repetidas m = len(dictadas) lista = list(set(dictadas)) conteo = {} for j in range(0,m,1): una = dictadas[j] if (una in conteo): conteo[una] = conteo[una]+1 else: conteo[una] = 1 # busca la mas aprobada mejor = '' if (len(conteo)>0): llaves = list(conteo.keys()) valores = np.array(conteo.values()) mejor = llaves[np.argmax(valores)] return(mejor) # PROGRAMA # INGRESO /siguiendo ejemplo de examen narchivos = ['notas-2015-I.csv', 'notas-2013-II.csv'] matricula = 201321454 materia = 'Fundamentos de Programación' semestre = '2015-I' # PROCEDIMIENTO notas = academico(narchivos) semestres = semestres(notas, matricula) nota_final = nota_academico(notas, matricula, materia) alto_AP = mas_aprobados(notas, semestre) # SALIDA print('las notas son: ') print(notas) print('--- para '+str(matricula) + ': ') print('semestres que estudió: ',semestres) print('notas final para '+materia+': ',nota_final) print('--- En el semestre '+semestre + ': ' ) print('la materia con alto indice de aprobación es: ', alto_AP)