Ejercicio: 3Eva2017TI_T1 Archivos de notas por semestre
Propuesta de solución en Python:
Para la prueba del algoritmo, se requiere los archivos:
Algoritmo en Python
# 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)