본문 바로가기
python

[python] 성적 처리하기

by 바디스 2020. 7. 22.

데이터는 score.txt에서 읽어오도록 하였다.

score.txt가 없을시 오류가 날 수 있음

 

 

기능

1 입력 : 이름 국어성적 영어성적 수학성적을 입력(총점과 평균은 계산해서 입력됨)

2 전체출력 : 모든 데이터 출력

3 이름 검색 : 이름을 입력해서 같은 이름인 사람의 점수 출력

4 평균 검색 : 점수를 입력해서 평균점수가 입력받은 점수보다 높은 사람 출력

5 수정 : 이름을 입력받으면 해당 이름과 같은 사람의 국어, 영어, 수학의 점수를 다시 입력받는다.

6 삭제 : 이름을 입력받아 같은 사람의 데이터를 삭제

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
def read_list():
    score_list = []
    with open("score.txt","r"as file:
        line = None
        while line != '':
            line = file.readline()
            one_list = line.split("\t")
            one_list[-1= one_list[-1][:-1]
            one_list[1:] = list(map(float,one_list[1:]))
            score_list.append(one_list)
    score_list = score_list[:-1]
    return score_list
 
def write_list(score_list):
    with open("score.txt","w"as file:
        for i in score_list:
            file.write(i[0])
            file.write("\t")
            file.write(str(i[1]))
            file.write("\t")
            file.write(str(i[2]))
            file.write("\t")
            file.write(str(i[3]))
            file.write("\t")
            file.write(str(i[4]))
            file.write("\t")
            file.write(str(i[5]))
            file.write("\n")
 
def print_list(list):
    for i in list:
        print(i,end="\t")
    print()
    
def insert():
    name = input("이름:")
    korea = float(input("국어:"))
    english = float(input("영어:"))
    math = float(input("수학:"))
    with open("score.txt","a"as file:
        file.write(name)
        file.write("\t")
        file.write(str(korea))
        file.write("\t")
        file.write(str(english))
        file.write("\t")
        file.write(str(math))
        file.write("\t")
        file.write(str(korea+english+math))
        file.write("\t")
        file.write(str((korea+english+math)/3))
        file.write("\n")
        
def read_all():
    score_list = read_list()
    print("이름\t국어\t영어\t수학\t총점\t평균")
    for i in score_list:
        print_list(i)
            
def read_name():
    name = input("이름:")
    score_list = read_list()
    print("이름\t국어\t영어\t수학\t총점\t평균")
    for i in score_list:
        if(i[0]==name):
            print_list(i)
        
def read_score():
    score = int(input("점수"))
    score_list = read_list()
    score_list = sorted(score_list, key=lambda x: x[-1], reverse=True)
    print("이름\t국어\t영어\t수학\t총점\t평균")
    for i in score_list:
        if(i[-1]>=score):
            print_list(i)
            
def list_del():
    name = input("이름")
    score_list = read_list()
    num=-1;
    for i in range(len(score_list)):
        if(score_list[i][0== name):
            num = i
            break
    if(num!=-1):
        del (score_list[num])
    write_list(score_list)    
 
def list_modify():
    name = input("이름")
    score_list = read_list()
    num=-1;
    for i in range(len(score_list)):
        if(score_list[i][0== name):
            num = i
            break
    if(num!=-1):
        korea = float(input("국어:"))
        english = float(input("영어:"))
        math = float(input("수학:"))
        score_list[num][1= korea
        score_list[num][2= english
        score_list[num][3= math
        score_list[num][4= (korea+english+math)
        score_list[num][5= (korea+english+math)/3
    write_list(score_list)
    
def score_data():
    while True:
        select = int(input("기능선택(1.입력 2.전체출력 3.이름검색 4.평균검색 5.수정 6.삭제 (0.끝))"))
        if(select == 1):
            insert()
        elif(select == 2):
            read_all()
        elif(select == 3):
            read_name()
        elif(select == 4):
            read_score()
        elif(select == 5):
            list_modify()           
        elif(select == 6):
            list_del()            
        else:
            break
 
 
score_data()
cs

 

댓글