Member method (or function) 1: makeRecord()
Member method 2: checkDelay()
Member method 3: deferDeadline()
class MySelfClass:
studentID = 0
birthday_year = 0
birthday_month = 0
birthday_day = 0
def getStudentID(self):
if(len(str(self.studentID)) == 10):
return self.studentID
else:
muptiple = 10 - len(str(self.studentID))
return self.studentID * (10 ** muptiple)
def getBirthday(self):
year = str(self.birthday_year)
if (self.birthday_month < 10):
month = "0" + str(self.birthday_month)
else:
month = str(self.birthday_month)
if(self.birthday_day < 10):
day = "0" + str(self.birthday_day)
else:
day = str(self.birthday_day)
return year + month + day
def getStudentIDByInteger(self):
return int(self.getStudentID())
def getBirthdayByInteger(self):
return (int(self.getBirthday()))
def getBirthdayByIntegerSum(self):
sum = 0
birthday = self.getBirthday()
for i in range(len(birthday)):
num = int(birthday[i])
sum += num
return sum
def getMaxInteger(self):
studentID = str(self.getStudentID())
birthday = str(self.getBirthday())
num_studentID = []
num_birthday = []
for i in range(len(studentID)):
num_studentID.append(int(studentID[i]))
for i in range(len(birthday)):
num_birthday.append(int(birthday[i]))
max_studentID = max(num_studentID)
max_birthday = max(num_birthday)
if (max_studentID > max_birthday):
return max_studentID
else:
return max_birthday
def getAverageInteger(self):
studentID = str(self.getStudentID())
birthday = str(self.getBirthday())
num_studentID = []
num_birthday = []
for i in range(len(studentID)):
num_studentID.append(int(studentID[i]))
for i in range(len(birthday)):
num_birthday.append(int(birthday[i]))
sum_studentID = sum(num_studentID)
sum_birthday = sum(num_birthday)
return (sum_studentID + sum_birthday) / (len(num_studentID) + len(num_birthday))
def getBirthdayByMonth(self):
birthday = str(self.getBirthday())
month = birthday[4:6]
if (month == "01"):
return "JAN"
elif (month == "02"):
return "FEB"
elif (month == "03"):
return "MAR"
elif (month == "04"):
return "APR"
elif (month == "05"):
return "MAY"
elif (month == "06"):
return "JUN"
elif (month == "07"):
return "JUL"
elif (month == "08"):
return "AUG"
elif (month == "09"):
return "SEP"
elif (month == "10"):
return "OCT"
elif (month == "11"):
return "NOV"
elif (month == "12"):
return "DEC"
class MyRecordClass():
record = []
def makeRecord(self, studentID, deadline, number, priority):
correcttype = ((type(studentID)) == str) and ((type(deadline)) == str) and ((type(number)) == str) and (type(priority) == int)
if (not correcttype):
return -1
length = (len(studentID) == 10) and (len(deadline) == 8) and (len(number) == 4) and (priority in [1, 2, 3])
if( correcttype and length):
new_record = [studentID, deadline, number, priority]
self.record.append(new_record)
else:
return -2
def checkDelay(self, number, today):
checkday = ""
for i in range(len(self.record)):
if (self.record[i][2] == number):
checkday = self.record[i][1]
if (checkday == ""):
return -1
int_checkday = int(checkday)
int_today = int(today)
check_year = int(checkday[:4])
check_month = int(checkday[4:6])
check_day = int(checkday[6:])
if (int_checkday == int_today):
return False
else:
if (check_day == 31):
check_day = 1
check_month += 1
if (check_month == 13):
check_month = 1
check_year += 1
else:
check_day -= 1
if(check_month < 10):
check_month_str = "0" + str(check_month)
else:
check_month_str = str(check_month)
if(check_day < 10):
check_day_str = "0" + str(check_day)
else:
check_day_str = str(check_day)
nextday = str(check_year) + check_month_str + check_day_str
int_nextday = int(nextday)
if (int_today == int_nextday):
return False
return True
def deferDeadline(self, number, delaydays):
delay_record = []
for i in range(len(self.record)):
if (self.record[i][2] == number):
delay_record = self.record[i]
if (delay_record == []):
return -1
if (delaydays > 14):
return -2
else:
original_deadline = delay_record[1]
original_deadline_year = int(original_deadline[:4])
original_deadline_month = int(original_deadline[4:6])
original_deadline_day = int(original_deadline[6:])
original_deadline_day += delaydays
if(original_deadline_day > 31):
original_deadline_day = original_deadline_day -31
original_deadline_month += 1
if(original_deadline_month > 12):
original_deadline_month = original_deadline_month - 12
original_deadline_year += 1
if (original_deadline_month < 10):
new_deadline_month = "0" + str(original_deadline_month)
else:
new_deadline_month = str(original_deadline_month)
if(original_deadline_day < 10):
new_deadline_day = "0" + str(original_deadline_day)
else:
new_deadline_day = str(original_deadline_day)
new_deadline = str(original_deadline_year) + new_deadline_month + new_deadline_day
delay_record[1] = new_deadline
return delay_record
from solution import *
if __name__ == "__main__":
### MySelfClass ###
myself = MySelfClass()
print ("### MySefClass ###")
print()
# getStudentID
print("getStudentID method")
myself.studentID = 2019
print(myself.getStudentID())
myself.studentID = 2019100907
print(myself.getStudentID())
print()
# getBirthday
print("getBirthday method")
myself.birthday_year = 2000
myself.birthday_month = 5
myself.birthday_day = 2
print(myself.getBirthday())
print()
# getStudentIDByInteger method
print("getStudentIDByInteger method")
print(type(myself.getStudentIDByInteger()))
print()
# getBirthdayByInteger method
print("getBirthdayByInteger method")
print(type(myself.getBirthdayByInteger()))
print()
# getBirthdayByIntegerSum method
print("getBirthdayByIntegerSum method")
print("Birthday:" ,myself.getBirthday())
print(myself.getBirthdayByIntegerSum())
print()
# getMaxInteger method
print("getMaxInteger method")
print("studentID:" ,myself.getStudentID())
print("Birthday:" ,myself.getBirthday())
print(myself.getMaxInteger())
print()
# getAverageInteger method
print("getAverageInteger method")
print("studentID:" ,myself.getStudentID())
print("Birthday:" ,myself.getBirthday())
print(myself.getAverageInteger())
print()
# getBirthdayByMonth method
print("getBirthdayByMonth method")
print("Birthday:" ,myself.getBirthday())
print(myself.getBirthdayByMonth)
print()
print()
print()
### MyRecord Class ###
myrecord = MyRecordClass()
print ("### MyRecord Class ###")
print()
# makeRecord method
print("makeRecord method")
print("try append [2019100907, \"20201231\"', \"A001\", 3]")
print(myrecord.makeRecord(2019100907, "20201231", "A001", 3))
print("try append [2019, \"20201231\"', \"A001\", 3]")
print(myrecord.makeRecord("2019", "20201231", "A001", 3))
print("try append [\"2019100907\", \"20201231\"', \"A001\", 3]")
print(myrecord.makeRecord("2019100907", "20201231", "A001", 3))
print("record:", myrecord.record)
print()
# checkDelay method
print("checkDelay method")
print("original record")
print(myrecord.record)
print("Check Delay number A002 record at 20201230")
print(myrecord.checkDelay("A002", "20201230"))
print("Check Delay number A001 record at 20201230")
print(myrecord.checkDelay("A001", "20201230"))
print("Check Delay number A001 record at 20201231")
print(myrecord.checkDelay("A001", "20201231"))
print("Check Delay number A001 record at 20210101")
print(myrecord.checkDelay("A001", "20210101"))
print()
# deferDeadline method
print("deferDeadline method")
print("original record")
print(myrecord.record)
print("delay the record with number A002 for 13 days")
print(myrecord.deferDeadline("A002", 13))
print("delay the record with number A001 for 15 days")
print(myrecord.deferDeadline("A001", 15))
print("delay the record with number A001 for 13 days")
print(myrecord.deferDeadline("A001", 13))