어떻게함?
7.1 class Person, class Student-
## 22211975_homework7
"""
Project: 22211975_homework7.1
Author:
Date of last update: 22.10.16
Update list:
-v1.0: added user-defined module
"""
class Person:
def __init__(self, name, reg_id, age):
self.setName(name)
self.setRegID(reg_id)
self.setAge(age)
def getName(self):
return self.name
def getRegID(self):
return self.reg_id
def getAge(self):
return self.age
def setName(self, nm):
self.name = nm
def setRegID(self, rg_id):
self.reg_id = rg_id
def setAge(self, ag):
if 0 <= ag < 250:
self.age = ag
else:
print("*** Error in setting age (name:{}, age:{})".format(self.name, ag))
self.age = 0 # default value
def __str__(self):
return "Person({}, {}, {})".format(self.getName(), self.getRegID(), self.getAge())
class Student(Person):
def __init__(self, name, reg_id, age, st_id, major, gpa):
Person.__init__(self, name, reg_id, age)
self.setMajor(major)
self.setSTID(st_id)
self.setGPA(gpa)
def getMajor(self):
return self.major
def getSTID(self):
return self.st_id
def getGPA(self):
return self.GPA
def setMajor(self, major):
# checking available major
set_majors = {"EE", "ICE", "ME", "CE"}
if major in set_majors:
self.major = major
else:
print("*** Error in setting major (name:{}, age:{})".format(self.name, major))
self.major = None # default value
def setSTID(self, st_id):
# include checking correctness of ST_ID here
self.st_id = st_id
def setGPA(self, gpa):
#include checking correct range of GPA
self.GPA = gpa
def __lt__(self, other):
if (self.GPA > other.GPA):
return True
else:
return False
def __str__(self):
return "Student({}, {}, {}, {}, {}, {})".\
format(self.getName(), self.getRegID(), self.getAge(), self.getSTID(), self.getMajor(), self.getGPA())
def compareStudent(st1, st2, compare):
if compare == "st_id":
if st1.st_id < st2.st_id:
return True
else:
return False
elif compare == "name":
if st1.name < st2.name:
return True
else:
return False
elif compare == "GPA":
if st1.GPA > st2.GPA: # GPA in decreasing order return True
return True
else:
return False
else:
return None
def sortStudent(L_st, key):
for i in range(0, len(L_st)):
min_idx = i
for j in range(i+1, len(L_st)):
if compareStudent(L_st[j], L_st[min_idx], key):
min_idx = j
if min_idx != i:
L_st[i], L_st[min_idx] = L_st[min_idx], L_st[i]
def printStudents(L_st):
for s in range(len(L_st)):
print(L_st[s])
# Application
if __name__ == "__main__":
students = [Student("Kim", 990101, 21, 12345, "EE", 4.0),
Student("Lee", 980715, 22, 11234, "ME", 4.2),
Student("Park", 101225, 20, 10234, "ICE", 4.3),
Student("Hong", 110315, 19, 13123, "CE", 4.1),
Student("Yoon", 971005, 23, 11321, "ICE", 4.2),
Student("Wrong", 100000, 23, 15321, "??", 3.2) ]
print("students before sorting : ")
printStudents(students)
sortStudent(students, "name")
print("\nstudents after sorting by name : ")
printStudents(students)
sortStudent(students, "st_id")
print("\nstudents after sorting by student_id : ")
printStudents(students)
sortStudent(students, "GPA")
print("\nstudents after sorting by GPA in decreasing order:")
printStudents(students)
7.2 class Date
## 22211975_homework7
"""
Project: 22211975_homework7.2
Author:
Date of last update: 22.10.16
Update list:
-v1.0: added user-defined module
"""
class Date:
def __init__(self, yr, mt, dy):
self.setYear(yr)
self.setMonth(mt)
self.setDay(dy)
def setYear(self, yr):
self.year = yr
def setMonth(self, mn):
if 1 <= mn <= 12:
self.month = mn
else:
print("*** Error in date setting ({}, {})".format(self.year, mn))
self.month = 1 # default value
def isLeapYear(self, yr):
if ((yr % 4 == 0) and (yr % 100 != 0)) or (yr % 400 == 0):
return True
else:
return False
def setDay(self, dy):
daysOfMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if self.isLeapYear(self.year):
daysOfMonth[2] = 29
if 1 <= dy <= daysOfMonth[self.month]:
self.day = dy
else:
print("*** Error in date setting ({}, {}, {})".format(self.year, self.month, dy))
self.day = 1
def getYear(self):
return self.year
def getMonth(self):
return self.month
def getDay(self):
return self.day
def __lt__(self, other):
if (self.year < other.year):
return True
elif (self.year == other.year) and (self.month < other.month):
return True
elif (self.year == other.year) and (self.month == other.month) and (self.day < other.day):
return True
else:
return False
def __str__(self):
return "({:2d}-{:2d}-{:2d})".format(self.getYear(), self.getMonth(), self.getDay())
def printDates(L_dates):
for d in L_dates:
print(d)
######################################################
# Application
#‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
if __name__ == "__main__":
dates = [Date(2000, 9, 15),
Date(1997, 2, 20),
Date(2001, 5, 2),
Date(2001, 5, 1),
Date(1999, 3, 1)]
print("dates before sorting : ")
for d in dates:
print(d)
#
dates.sort()
print("\nstudents after sorting : ")
for d in dates:
print(d)
7.3 class Time
## 22211975_homework7
"""
Project: 22211975_homework7.3
Author:
Date of last update: 22.10.16
Update list:
-v1.0: added user-defined module
"""
class Time:
def __init__(self, hr, mn, sec):
self.setHour(hr)
self.setMinute(mn)
self.setSecond(sec)
def setHour(self, hr):
if 0 <= hr <= 23:
self.hour = hr
else:
print("*** Error in setting time (hour: {})".format(hr))
self.hour = 0
def setMinute(self, mn):
if 0 <= mn <= 59:
self.minute = mn
else:
print("*** Error in setting time (minute: {})".format(mn))
self.minute = 0
def setSecond(self, sec):
if 0 <= sec <= 59:
self.second = sec
else:
print("*** Error in setting time (second: {})".format(sec))
self.second = 0
def getHour(self):
return self.hour
def getMinute(self):
return self.minute
def getSecond(self):
return self.second
def __lt__(self, other):
if (self.hour < other.hour):
return True
elif (self.hour == other.hour) and (self.minute < other.minute):
return True
elif (self.hour == other.hour) and (self.minute == other.minute) and (self.second < other.second):
return True
else:
return False
def __str__(self):
return "({:2d}:{:2d}:{:2d})".format(self.getHour(), self.getMinute(), self.getSecond())
def printTimes(L_times):
for t in L_times:
print(t)
######################################################
# Application
times = [Time(23, 59, 59),
Time(9, 0, 5),
Time(13, 30, 0),
Time(3, 59, 59),
Time(0, 0, 0), ]
print("times before sorting : ")
for t in times:
print(t)
times.sort()
print("\ntimes after sorting : ")
for t in times:
print(t)
7.4 class Mtrx
## 22211975_homework7
"""
Project: 22211975_homework8.2
Author:
Date of last update: 22.10.31
Update list:
-v1.0: added user-defined module
"""
class Mtrx:
def __init__(self, name, n_row, n_col, L_data):
self.name = name
self.n_row = n_row
self.n_col = n_col
self.rows = []
index = 0
for i in range(0, self.n_row):
L_row = []
for j in range(0, self.n_col):
L_row.append(L_data[index])
index = index + 1
self.rows.append(L_row)
def setName(self, name):
self.name = name
def __str__(self):
s = "{} = \n".format(self.name)
for i in range(0, self.n_row):
for j in range(0, self.n_col):
s += "{:3d}".format(self.rows[i][j], end=" ")
s += "\n"
return s
def __add__(self, other): # operator overloading of '+'
L_res = []
for i in range(0, self.n_row):
for j in range(0, self.n_col):
r_ij= self.rows[i][j] + other.rows[i][j]
L_res.append(r_ij)
return Mtrx("R", self.n_row, self.n_col, L_res)
def __sub__(self, other): # operator overloading of '-'
L_res = []
for i in range(0, self.n_row):
for j in range(0, self.n_col):
r_ij= self.rows[i][j] - other.rows[i][j]
L_res.append(r_ij)
return Mtrx("R", self.n_row, self.n_col, L_res)
def __mul__(self, other): # operator overloading of '*'
L_res = []
for i in range(0, self.n_row):
for j in range(0, other.n_col):
r_ij= 0
for k in range(0, other.n_row):
r_ij = r_ij + self.rows[i][k] * other.rows[k][j]
L_res.append(r_ij)
return Mtrx("R", self.n_row, other.n_col, L_res)
#‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
if __name__ == "__main__":
LA = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
LB = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0]
LC = [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]
mA = Mtrx("mA", 3, 5, LA)
print(mA)
mB = Mtrx("mB", 3, 5, LB)
print(mB)
mC = Mtrx("mC", 5, 3, LC)
print(mC)
mD = mA + mB
mD.setName("mD = mA + mB")
print(mD)
mE = mA - mB
mE.setName("mE = mA - mB")
print(mE)
mF = mA * mC
mF.setName("mF = mA * mC")
print(mF)
'과제' 카테고리의 다른 글
컴사파 - 9주차 (1) | 2022.11.01 |
---|---|
컴사파 - 6주차 (1) | 2022.10.04 |
컴사파 - 5주차 (0) | 2022.09.28 |
컴사파 - 4주차 (0) | 2022.09.22 |
컴사파 - 3주차 (1) | 2022.09.17 |