Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import copy
- class Course:
- def __init__(self,course_id,course_title,course_price,course_level_begin,course_level_end):
- self.course_id = course_id
- self.course_title = course_title
- self.course_price = course_price
- self.reputation = 0
- self.school = ''
- self.course_pre = 0
- self.course_post = 0
- self.course_level_begin=course_level_begin
- self.course_level_end=course_level_end
- def set_course_level(self,course_level_begin,course_level_end):
- self.course_level_begin = course_level_begin
- self.course_level_end = course_level_end
- def get_course_level_begin(self):
- return self.course_level_begin
- def get_course_level_end(self):
- return self.course_level_end
- def get_id(self):
- return self.course_id
- def get_course_title(self):
- return self.course_title
- def set_course_title(self,course_title):
- self.course_title = course_title
- def set_price(self,price):
- self.course_price = price
- def get_price(self):
- return self.course_price
- class Seller:
- def __init__(self, name):
- self.name = name
- self.reputation = 0
- self.courses = []
- def add_course(self, course_instance):
- self.courses.append(course_instance)
- def set_reputation(self,rep):
- self.reputation = rep
- def get_reputation(self):
- return self.reputation
- class Student:
- def __init__(self,name,initial_level,target_level,initial_budget, condition):
- self.name = name
- self.level = initial_level
- self.target_level = target_level
- self.budget = initial_budget
- self.condition = condition
- self.course_catalog = 0
- def get_name(self):
- return self.name
- def get_target_level(self):
- return self.target_level
- def set_current_level(self,level):
- self.level = level
- def get_current_level(self):
- return self.level
- def set_budget(self,budget):
- self.budget = budget
- def get_current_budget(self):
- return self.budget
- class CourseSequence:
- def __init__(self,course_instance_list,student_instance):
- self.courses = course_instance_list
- self.student = student_instance
- def get_student(self):
- return self.student
- def get_total_price(self):
- total = 0
- for x in self.courses:
- total = total+ x.get_price()
- return total
- def is_payable(self):
- return (self.get_total_price() <= self.student.get_current_budget())
- def is_valid(self):
- #print "---MULAI--"
- student_target_level = self.student.get_target_level()
- student_initial_level = self.student.get_current_level()
- course_initial_level = self.courses[0].get_course_level_begin()
- rule_1 = (student_initial_level == course_initial_level)
- #print "---"
- cl_rev = copy.copy(self.courses)
- cl_rev.reverse()
- kondisi = True
- sebelum = cl_rev[0].get_course_level_end()
- for x in cl_rev:
- #print "nama {} kondisi {} sebelum {} ending {}" . format(x.get_course_title(),kondisi, sebelum, x.get_course_level_end())
- kondisi = kondisi and (x.get_course_level_end()>=sebelum)
- #print "beginning {}" . format(x.get_course_level_begin())
- sebelum = x.get_course_level_begin()
- rule_2 = (student_initial_level <= sebelum) and (kondisi==True)
- kondisi_2 = kondisi
- #print "----"
- kondisi = True
- sesudah = self.courses[0].get_course_level_begin()
- for x in self.courses:
- #print "nama {} kondisi{} sesudah{} beginning{}" . format(x.get_course_title(),kondisi, sesudah, x.get_course_level_begin())
- kondisi = kondisi and (x.get_course_level_begin()<=sesudah)
- #print "ending {}" . format(x.get_course_level_end())
- sesudah = x.get_course_level_end()
- rule_3 = (student_target_level >= sesudah) and (kondisi==True)
- kondisi_3 = kondisi
- #print "rule 1 {} rule 2 {} rule 3 {} kondisi_2 {} kondisi_3 {}" . format(rule_1, rule_2, rule_3,kondisi_2,kondisi_3)
- #print "---SELESAI--"
- return ((rule_1 and rule_2 and rule_3)==True)
- if __name__=='__main__':
- A = Course('A','Course A',500,1,3)
- B = Course('B','Course B',20,3,7)
- C = Course('C','Course C',400,1,10)
- D = Course('D','Course D',20,1,5)
- E = Course('E','Course E',200,5,10)
- studentB = Student('Student B',1,10,1000,[])
- CS1 = CourseSequence([A,B,C],studentB)
- print "Hi {}" . format(CS1.get_student().get_name())
- print "Total Price for this sequence {}" . format(CS1.get_total_price())
- print "Student can pay ? {}" . format(CS1.is_payable())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement