#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[표준답안] 2025년도 2학기 오프라인수업 기말고사2025-12-04 08:07
작성자 Level 10
class Agent:

def api_00(self, filename): # Practice.13 참조
self.students = []
f = open(filename, 'r')
f.readline()

for line in f:
parts = line.strip().split(',')

s = {
'No': int(parts[0]),
'Department': parts[1],
'Grade': int(parts[2]),
'Student_ID': parts[3],
'Name': parts[4],
'Absence': int(parts[5]),
'Attendance_Score': float(parts[6]),
'Final_Exam': int(parts[7]),
'Middle_Exam': int(parts[8]),
'Final_Score': float(parts[9]),
'Final_Grade': parts[10],
}
self.students.append(s)

f.close()
return len(self.students)

def _calculate_average(self, field, department=None, grade=None):
total = 0.0
cnt = 0
for s in self.students:
if department is not None and s['Department'] != department:
continue
if grade is not None and s['Grade'] != grade:
continue
total += s[field]
cnt += 1
return total / cnt

def api_01(self):
return self._calculate_average('Final_Score')

def api_02(self):
return self._calculate_average('Middle_Exam')

def api_03(self):
return self._calculate_average('Final_Exam')

def api_04(self, given_dept):
return self._calculate_average('Final_Score', department=given_dept)

def api_05(self, given_dept):
return self._calculate_average('Middle_Exam', department=given_dept)

def api_06(self, given_dept):
return self._calculate_average('Final_Exam', department=given_dept)

def api_07(self, given_grade):
return self._calculate_average('Final_Score', grade=given_grade)

def api_08(self, given_dept, given_grade):
return self._calculate_average('Final_Score', department=given_dept, grade=given_grade)

class SuperAgent(Agent):

def api_09(self):
max_score = None
for s in self.students:
fs = s['Final_Score']
if (max_score is None) or (fs > max_score):
max_score = fs

ids = []
for s in self.students:
if s['Final_Score'] == max_score:
ids.append(s['Student_ID'])
ids.sort()
return ids

def api_10(self, department):
ids = []
for s in self.students:
if s['Department'] == department:
ids.append(s['Student_ID'])
ids.sort()
return ids

def api_11(self, absence_threshold):
ids = []
for s in self.students:
if s['Absence'] > absence_threshold:
ids.append(s['Student_ID'])
ids.sort()
return ids

def api_12(self):
ids = []
for s in self.students:
if (s['Final_Exam'] == 0 and s['Middle_Exam'] == 0) or (s['Absence'] >= 6):
ids.append(s['Student_ID'])
ids.sort()
return ids

def api_13(self, department):
ids = []
for s in self.students:
if s['Department'] != department:
continue
if (s['Final_Exam'] == 0 and s['Middle_Exam'] == 0) or (s['Absence'] >= 6):
ids.append(s['Student_ID'])
ids.sort()
return ids

def api_14(self):
counts = {}
for s in self.students:
g = s['Final_Grade']
if g in counts:
counts[g] += 1
else:
counts[g] = 1
return counts

def api_15(self):
groups = {}
for s in self.students:
g = s['Final_Grade']
if g not in groups:
groups[g] = []
groups[g].append(s['Student_ID'])
for g in groups:
groups[g].sort()
return groups

def api_16(self):
out = []
for s in self.students:
out.append([s['Student_ID'], s['Final_Grade']])
out.sort()
return out

def api_17(self):
out = []
for s in self.students:
out.append([s['Student_ID'], s['Name'], s['Final_Grade']])
out.sort()
return out

def api_18(self):
out = []
for s in self.students:
if s['Final_Score'] >= 80 and s['Absence'] <= 2:
out.append([s['Student_ID'], s['Name'], s['Final_Grade']])
out.sort()
return out
댓글