s2Eva_IT2005_T4 Registrar mejores calificaciones

Ejercicio: 2Eva_IT2005_T4 Registrar mejores calificaciones

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2005_T4 Registrar mejores calificaciones
# propuesta: edelros@espol.edu.ec

# Se usará menú y diccionario para cada registro
# Tarea: opcion 4 con nota mas alta y mas baja
# Tarea: aumentar opciones para grabar o leer archivo
# Tarea: Se puede hacer también con listas y sin menu

lista = []
suma = 0

opcion = '0'
while not(opcion=='5'):
    print('1. Ingresar registro')
    print('2. Ingresar ponderaciones')
    print('3. Calcular calificaciones')
    print('4. Mostrar lista y extremos')
    print('5. Salir')
    
    opcion = input('-cual opcion: ')
    
    if (opcion=='1'):
        print('REGISTRO ******')
        nombre   = input('nombre:  ')
        leccion  = int(input('leccion:  '))
        proyecto = int(input('proyecto: '))
        examen   = int(input('examen:   '))
        estudiante = {'nombre':nombre,
                      'leccion':leccion,
                      'proyecto':proyecto,
                      'examen':examen,
                      'calif':0}
        lista.append(estudiante)
        
    elif (opcion=='2'):
        print('PONDERACION')
        pondlecc = int(input('% leccion:  '))
        pondproy = int(input('% proyecto: '))
        pondexam = int(input('% examen:   '))
        suma = pondlecc + pondproy + pondexam
        while not(suma==100):
            print('ponderación no suma 100')
            pondlecc = int(input('% leccion:  '))
            pondproy = int(input('% proyecto: '))
            pondexam = int(input('% examen:   '))
            suma = pondlecc + pondproy + pondexam
        
    elif (opcion=='3'):
        print('CALCULAR')
        tamano = len(lista)
        if (suma==100):
            for i in range(0,tamano,1):
                suma = lista[i]['leccion']*pondlecc
                suma = suma + lista[i]['proyecto']*pondproy
                suma = suma + lista[i]['examen']*pondexam
                prom = suma/100
                lista[i]['calif'] = prom
            print('Recalculadas las notas, proceder a mostrar')
        else:
            print('** las ponderaciones no son validas **')
            print('** volver a opcion de ponderaciones **')
        
    elif (opcion=='4'):
        print('LISTA')
        tamano = len(lista)
        print('nombre, leccion, proyecto, examen, calif')
        for i in range(0,tamano,1):
            texto = lista[i]['nombre'] + ', ' + str(lista[i]['leccion'])
            texto = texto + ', '+str(lista[i]['proyecto'])
            texto = texto + ', ' + str(lista[i]['examen'])
            texto = texto +', '+str(lista[i]['calif']) 
            print(texto)

    elif (opcion=='5'):
        print('Gracias por usar el software...')

    else:
        print('** NO es una opcion disponible **')

resultado de algoritmo

1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 1
REGISTRO ******
nombre:  juan
leccion:  50
proyecto: 70
examen:   80
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 1
REGISTRO ******
nombre:  Maria
leccion:  70
proyecto: 60
examen:   90
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 2
PONDERACION
% leccion:  30
% proyecto: 20
% examen:   50
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 3
CALCULAR
Recalculadas las notas, proceder a mostrar
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 4
LISTA
nombre, leccion, proyecto, examen, calif
juan, 50, 70, 80, 69.0
Maria, 70, 60, 90, 78.0
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 5
Gracias por usar el software...
>>>