Как отображать описательную статистику по предметам и студентам, предлагая возможность экспорта файла в обычный текст? - Python - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно доставить задание, в котором я должен продолжить код, который я сделал ранее. Я покажу вам ниже.

Этот код должен отображать описательную статистику по предметам и студентам; предоставление пользователю возможности сгенерировать простой текстовый файл.

'''Importación de librerías a utilizar'''
import pandas as pd
import time
import collections
import json

'''Declaración de listas y diccionarios'''
listaAlumnos = {}
alumno = pd.DataFrame(listaAlumnos)

dicc_progra={}
dicc_base = {}
dicc_est = {}
dicc_macro = {}
dicc_crea={}
diccionario={}

a={}
b={}
c={}
d={}
e={}
lista_rep=[]

'''Inicio del código
Menu para seleccionar que hacer'''

while True:
    print('Selecciona una opcion:\n1)Ingresar alumno             2)Ingresar calificaciones')
    print('3)Mostrar estadísticas        4)Mostrar claves de alumnos reprobados')
    print('5)Guardar archivos            6)Cargar archivos\n7)Salir')
    opcion = int(input())
    print('*' * 40)
    #Desarrollo del ingreso de alumnos, y asignación autómatica de claves
    if opcion == 1:
        while True:
            nombreAlumno = str(input('*Ingresa el nombre del alumno: '))
            print(f'*El nombre del alumno es {nombreAlumno}')
            claveAlumno = len(listaAlumnos.keys()) + 1
            print(f'*La clave del nuevo alumno es {claveAlumno}')
            print(f'*Se ha registrado al alumno {nombreAlumno} con clave {claveAlumno}')
            listaAlumnos[claveAlumno] = nombreAlumno
            alumno[claveAlumno] = [nombreAlumno]
            alumno.index = ['Alumno']
            decisionAlumno = int(input('Agregar otro alumno\n1) Si         2) No\n'))
            print()
            if decisionAlumno == 1:
                pass
            else:
                break
    #Dar de altas las calificaciones en la materia que el usuario eliga del menu      
    elif opcion == 2:
        while True:
            print('Selecciona la materia:\n1)Programación                         2)Base de datos')
            print('3)Estadistica                          4)Macroeconomía')
            print('5)Creatividad                          6)Salir y guardar datos\n')
            materia = int(input())
            if materia == 1:
                for x in listaAlumnos:
                    nota = int(input(f"Introducir la calificación del alumno con clave {x}: "))
                    dicc_progra[x]= nota
                    if nota < 70:
                        lista_rep.append(x)
                a = dicc_progra.copy()
                print("Ha terminado de guardar las calificaciones, procederemos a darlas de alta.")
                print('*' * 40)
            elif materia == 2:
                for x in listaAlumnos:
                    nota = int(input(f"Introducir la calificación del alumno con clave {x}: "))
                    dicc_base[x]= nota
                    if nota < 70:
                        lista_rep.append(x)
                b = dicc_base.copy()
                print("Ha terminado de guardar las calificaciones, procederemos a darlas de alta.")
                print('*' * 40)
            elif materia == 3:
                for x in listaAlumnos:
                    nota = int(input(f"Introducir la calificación del alumno con clave {x}: "))
                    dicc_est[x]= nota
                    if nota < 70:
                        lista_rep.append(x)               
                c = dicc_est.copy()
                print("Ha terminado de guardar las calificaciones, procederemos a darlas de alta.")
                print('*' * 40)
            elif materia == 4:
                for x in listaAlumnos:
                    nota = int(input(f"Introducir la calificación del alumno con clave {x}: "))
                    dicc_macro[x]= nota
                    if nota < 70:
                        lista_rep.append(x)
                d = dicc_macro.copy()
                print("Ha terminado de guardar las calificaciones, procederemos a darlas de alta.")              
                print('*' * 40)
            elif materia == 5:
                for x in listaAlumnos:
                    nota = int(input(f"Introducir la calificación del alumno con clave {x}: "))
                    dicc_crea[x]= nota
                    if nota < 70:
                        lista_rep.append(x)       
                e = dicc_crea.copy()
                print("Ha terminado de guardar las calificaciones, procederemos a darlas de alta.")
                print('*' * 40)
            elif materia == 6:
                diccionario = {1:a,2:b,3:c,4:d,5:e}
                calificaciones = pd.DataFrame(diccionario)
                Alumnos = listaAlumnos.copy()               
                print(diccionario)
                print(calificaciones)
                print('*' * 40)
                break
    #Existiendo ya las calificaciones, procede a describir con ayuda de la estadistica como fueron las notas de cada materia
    elif opcion == 3:
        print("Las estadisticas arrojadas según nuestra materia es lo siguiente:")
        print(calificaciones.describe())
    #Muestra las claves de alumnos que tienen 2 o más materias reprobadas
    elif opcion == 4:
        while True:
            reprobados = collections.Counter(lista_rep)
            print("A continuación, les presentaremos las claves de los alumnos reprobados")
            print(reprobados)
            break    
    #Opción que nos permite salir del programa
    elif  opcion == 5:
        while True:
            opcion = int(input('Selecciona un tipo de archivo\n 1) CSV      2) JSON\n'))
            if opcion == 1:
                alumno.to_csv(r'alumno.csv', index = True, header = True)
                print()
                calificaciones.to_csv(r'calificaciones.csv', index = True, header  = True)
                print('Espera mientras se guardan los archivos')
                time.sleep(2)
            else:
                with open("Alumnos.json", "w") as alumnosW:
                    json.dump(Alumnos,alumnosW)
                with open("calificaciones.json", "w") as cuentasW:
                    json.dump(diccionario, cuentasW)
            break
    elif opcion == 6:
        try:
            alumno = pd.read_csv('alumno.csv', index_col = 0)
            calificaciones = pd.read_csv('calificaciones.csv', index_col = 0)
            print('Alumnos')
            print(alumno.T)
            time.sleep(1)
            print()
            print('Calificaciones')
            print(calificaciones.T)
            time.sleep(1)
            print('*Archivos CSV cargados')
        except FileNotFoundError:
            print('*No se encontraron archivos csv')
            print("*" * 40)
        try:
            with open("calificaciones.json", "r") as cuentasR:
                diccionario = json.load(cuentasR)
            with open("Alumnos.json","r") as alumnosR:
                alumnos = json.load(alumnosR)
            print("*Archivo Json cargado: Calificaciones*")    
            print(diccionario)
            print("*" * 40)
            print("*Archivo Json cargado: Lista de Alumnos*")
            print(alumnos)
            print("*" * 40)
        except FileNotFoundError:
            print("*No se encontraron archivos json*")
    else:`enter code here`
        print('Adios')
        break        

Конкретно пытается выполнить в рамках этого кода:

Отобразить формат отчета с описательной статистикой по предмету и студенту. После этого спросите пользователя, хотят ли они экспортировать отчет в виде обычного текста.

Не могли бы вы поддержать меня, предложив способы решения проблемы? Я был бы очень признателен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...