-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathV2_GPA_Calc.py
More file actions
86 lines (70 loc) · 2.5 KB
/
V2_GPA_Calc.py
File metadata and controls
86 lines (70 loc) · 2.5 KB
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
course_dict = {}
course_list = []
def gpa_in():
valid_grades = ['A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F']
grade_to_num = {'A+': 4.5, 'A': 4.0, 'B+': 3.5, 'B': 3.0, 'C+': 2.5, 'C': 2.0, 'D+': 1.5, 'D': 1.0, 'F': 0.0}
course_name = input("과목명을 입력하세요:\n")
course_code = str(hash(course_name))[:5]
course_dict[course_code] = course_name
while True:
try:
score_input = int(input("학점을 입력하세요:\n"))
if score_input > 0:
break
else:
print("유효한 학점을 입력하세요.\n")
except ValueError:
print("유효한 학점을 입력하세요.\n")
while True:
grade_input = input("평점을 입력하세요:\n").upper()
if grade_input in valid_grades:
break
else:
print("유효한 평점을 입력하세요.\n")
course_tuple = (course_code, score_input, grade_input)
course_list.append(course_tuple)
print("입력되었습니다.\n")
def gpa_out():
for course in course_list:
course_code, score, grade = course
course_name = course_dict[course_code]
print(f"[{course_name}] {score}학점: {grade}")
def gpa_cal():
a_tscore = 0
a_tgrade = 0
b_tscore = 0
b_tgrade = 0
best_grades = {}
for course in course_list:
course_code, score, grade = course
grade_num = grade_to_num[grade]
if course_code not in best_grades or best_grades[course_code][1] < grade_num:
best_grades[course_code] = (score, grade_num)
a_tscore += score
a_tgrade += score * grade_num
if grade != 'F':
b_tscore += score
b_tgrade += score * grade_num
a_gpa = a_tgrade / a_tscore if a_tscore > 0 else 0
b_gpa = b_tgrade / b_tscore if b_tscore > 0 else 0
a_gpa = round(a_gpa, 2)
b_gpa = round(b_gpa, 2)
print(f"\n제출용: {b_tscore}학점 (GPA: {b_gpa})\n")
print(f"열람용: {a_tscore}학점 (GPA: {a_gpa})\n\n")
print("프로그램을 종료합니다.")
while True:
try:
task = int(input("작업을 선택하세요.\n 1.입력\n 2.출력\n 3.계산\n"))
if task == 1:
gpa_in()
continue
if task == 2:
gpa_out()
continue
if task == 3:
gpa_cal()
break
else:
print("1, 2, 혹은 3을 입력하세요.")
except ValueError:
print("1, 2, 혹은 3을 입력하세요.\n")