파이썬의 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 |