s3Eva_IT2017_T1 Archivos de notas por semestre

Propuesta de solución en Python:

Para la prueba del algoritmo, se requiere los archivos:

notas-2015-I.csv

notas-2013-II.csv

# 3ra Evaluación I termino 2017
# Tema 1. 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)