코딩은 실력보다 시력이지

빅데이터교육과정/Python

파이썬 - 성적처리

Listeria 2021. 4. 24. 18:42

파이썬의 list, dict을 활용하여 성적을 처리하고 처리된 값을 pickle을 이용해 데이터로 저장하고 또 불러오는 코드. 각 기능 별로 함수를 만들어서 사용할 수 있도록 하였습니다.

 

하나씩 만들다가 생각이 났는데 생각해보니 파일 n개 입력하는건 그냥 입력하는 애를 n번 반복시켰으면 되는...;;

import pickle
import copy

member_dict =[]
label = ['kor', 'eng', 'math', 'sci', 'tot', 'avg']

#파일 쓰기    
def data_save(member_dict):
    with open('grade.p', 'wb') as file:
        pickle.dump(member_dict, file)

#파일 불러오기
def data_read():
    with open('grade.p', 'rb') as file:
        member_dict = pickle.load(file)

        return member_dict

#n개의 데이터 입력
def data_write():
    person = int(input('member num : '))
    
    for i in range(0, person):
        in_grade = []
        grade=[]
        tot = 0
        tot_data = []
        total = []
        avg = []
        name=[]
        grade_dict = []
        name.append(input('name : '))
        in_grade += input('kor eng math sci : ').split()

        for j in range(0, len(in_grade)):
            tot += int(in_grade[j])
            grade.append(int(in_grade[j]))
        grade.append(tot)
        grade.append(tot / 4)
        
        
        grade_dict.append(dict(zip(label, grade)))
        member_dict.append(dict(zip(name, grade_dict)))
        data_save(member_dict)
        print(grade)
        print(member_dict)



#데이터 출력
def data_disp():
    print('name\tkor\teng\tmath\tsci\ttotal\tavg')
    tot_data = data_read()
    for i in range(0, len(tot_data)):

        data = tot_data[i]
        
        for key,value in data.items():
            print(key,end='\t')
            for value in value.values():
                print(value, end='\t')
            print()

#데이터 검색
def data_srch():
    ask = input('name : ')
    stack = 0
    tot_data = data_read()
    for i in range(0, len(tot_data)):
        
        if stack==0:
            for key,value in tot_data[i].items():
                if key==ask:
                    print('name\tkor\teng\tmath\tsci\ttotal\tavg')
                    print(key,end='\t')
                    for value in value.values():
                        print(value, end='\t')
                    print()
                    stack=1
    if stack==0:
        print('wrong name')
     
#데이터 삭제
def data_delete():
    ask = input('name : ')
    print(ask)

    tot_data = data_read()
    print(tot_data)
    for i in range(0, len(tot_data)):
        data=tot_data[i]
        if ask in data:
            location =i
        else:
            location = 0
    if location!=0:
        del tot_data[location]
        member_dict=copy.deepcopy(tot_data)
        data_save(member_dict)
        data_disp()
    else:
        print('wrong name')


#데이터 수정
def data_modify():
    ask = input('name : ')

    tot_data = data_read()
    print(tot_data)
    for i in range(0, len(tot_data)):
        data=tot_data[i]
        if ask in data:
            location =i
        else:
            location = 0

    if location != 0:        
        del tot_data[location]
        in_grade = []
        grade=[]
        tot = 0
        total = []
        avg = []
        name=[]
        name.append(ask)
        grade_dict = []
        in_grade += input('kor eng math sci : ').split()
        for j in range(0, len(in_grade)):
            tot += int(in_grade[j])
            grade.append(int(in_grade[j]))
        grade.append(tot)
        grade.append(tot / 4)
        
        grade_dict.append(dict(zip(label, grade)))

        tot_data.insert(location,dict(zip(name, grade_dict)))
        print(tot_data)

        member_dict=copy.deepcopy(tot_data)
        data_save(member_dict)
    else:
        print('wrong name')


#데이터 추가
def data_add():

    in_grade = []
    grade=[]
    tot = 0
    tot_data = []
    total = []
    avg = []
    name=[]
    grade_dict = []
    name.append(input('name : '))
    in_grade += input('kor eng math sci : ').split()

    for j in range(0, len(in_grade)):
        tot += int(in_grade[j])
        grade.append(int(in_grade[j]))
    grade.append(tot)
    grade.append(tot / 4)
    
    member_dict=data_read()
    grade_dict.append(dict(zip(label, grade)))
    member_dict.append(dict(zip(name, grade_dict)))

    print(grade)
    print(member_dict)
    data_save(member_dict)

'빅데이터교육과정 > Python' 카테고리의 다른 글

최종프로젝트 - AWS  (0) 2021.07.01
최종 프로젝트 - 이미지 학습(1)  (0) 2021.07.01
최종 프로젝트 - 자연어 처리  (0) 2021.07.01
DATA 긁어오기  (0) 2021.05.25