HW2

.py

School

University of Pennsylvania *

*We aren’t endorsed by this school

Course

MISC

Subject

Accounting

Date

Jan 9, 2024

Type

py

Pages

11

Uploaded by ColonelPencilSandpiper19

# HW2 # REMINDER: The work in this assignment must be your own original work and must be completed alone. import random, os class Course: ''' >>> c1 = Course('CMPSC132', 'Programming in Python II', 3) >>> c2 = Course('CMPSC360', 'Discrete Mathematics', 3) >>> c1 == c2 False >>> c3 = Course('CMPSC132', 'Programming in Python II', 3) >>> c1 == c3 True >>> c1 CMPSC132(3): Programming in Python II >>> c2 CMPSC360(3): Discrete Mathematics >>> c3 CMPSC132(3): Programming in Python II >>> c1 == None False >>> print(c1) CMPSC132(3): Programming in Python II ''' def __init__(self, cid, cname, credits): self.cid= cid self.cname= cname self.credits= int(credits) def __str__(self): return f"{self.cid}({self.credits}): {self.cname}" __repr__ = __str__ def __eq__(self, other): if isinstance(other,Course): if self.cid== other.cid: return True return False return False class Catalog: ''' >>> C = Catalog() >>> C.courseOfferings {} >>> C._loadCatalog("cmpsc_catalog_small.csv") >>> C.courseOfferings {'CMPSC 132': CMPSC 132(3): Programming and Computation II, 'MATH 230': MATH 230(4): Calculus and Vector Analysis, 'PHYS 213': PHYS 213(2): General Physics, 'CMPEN 270': CMPEN 270(4): Digital Design, 'CMPSC 311': CMPSC 311(3): Introduction to Systems Programming, 'CMPSC 360': CMPSC 360(3): Discrete Mathematics for Computer Science} >>> C.removeCourse('CMPSC 360') 'Course removed successfully'
>>> C.courseOfferings {'CMPSC 132': CMPSC 132(3): Programming and Computation II, 'MATH 230': MATH 230(4): Calculus and Vector Analysis, 'PHYS 213': PHYS 213(2): General Physics, 'CMPEN 270': CMPEN 270(4): Digital Design, 'CMPSC 311': CMPSC 311(3): Introduction to Systems Programming} >>> isinstance(C.courseOfferings['CMPSC 132'], Course) True ''' def __init__(self): self.courseOfferings={} def addCourse(self, cid, cname, credits): if not cid in self.courseOfferings: course= Course(cid, cname, credits) self.courseOfferings[cid]=course return "Course added successfully" else: return "Course already added" def removeCourse(self, cid): if cid in self.courseOfferings: self.courseOfferings.pop(cid) return "Course removed successfully" else: return "Course not found" def _loadCatalog(self, file): target_path = os.path.join(os.path.dirname(__file__), file) with open(target_path, "r") as f: course_info=f.readline() output_lst=[] while course_info!="": course_info=course_info.split(",") output_lst+=course_info course_info=f.readline() for j in range(len(output_lst)): if "\n" in output_lst[j]: output_lst[j]=output_lst[j][:-1] for i in range(0,len(output_lst)-2,3): course_obj=Course(output_lst[i],output_lst[i+1],output_lst[i+2]) self.courseOfferings[output_lst[i]]= course_obj class Semester: ''' >>> cmpsc131 = Course('CMPSC 131', 'Programming in Python I', 3) >>> cmpsc132 = Course('CMPSC 132', 'Programming in Python II', 3) >>> math230 = Course("MATH 230", 'Calculus', 4) >>> phys213 = Course("PHYS 213", 'General Physics', 2) >>> econ102 = Course("ECON 102", 'Intro to Economics', 3) >>> phil119 = Course("PHIL 119", 'Ethical Leadership', 3) >>> spr22 = Semester() >>> spr22 No courses >>> spr22.addCourse(cmpsc132) >>> isinstance(spr22.courses['CMPSC 132'], Course)
True >>> spr22.addCourse(math230) >>> spr22 CMPSC 132; MATH 230 >>> spr22.isFullTime False >>> spr22.totalCredits 7 >>> spr22.addCourse(phys213) >>> spr22.addCourse(econ102) >>> spr22.addCourse(econ102) 'Course already added' >>> spr22.addCourse(phil119) >>> spr22.isFullTime True >>> spr22.dropCourse(phil119) >>> spr22.addCourse(Course("JAPNS 001", 'Japanese I', 4)) >>> spr22.totalCredits 16 >>> spr22.dropCourse(cmpsc131) 'No such course' >>> spr22.courses {'CMPSC 132': CMPSC 132(3): Programming in Python II, 'MATH 230': MATH 230(4): Calculus, 'PHYS 213': PHYS 213(2): General Physics, 'ECON 102': ECON 102(3): Intro to Economics, 'JAPNS 001': JAPNS 001(4): Japanese I} ''' def __init__(self): self.courses={} def __str__(self): if self.courses!={}: x=list(self.courses.keys()) return "; ".join(x) else: return "No courses" __repr__ = __str__ def addCourse(self, course): if not course.cid in self.courses: self.courses[course.cid]= course else: return "Course already added" def dropCourse(self, course): if course.cid in self.courses: self.courses.pop(course.cid) else: return "No such course" @property def totalCredits(self): total= 0 for course in self.courses.values(): total+=course.credits
return total @property def isFullTime(self): if self.totalCredits>=12: return True else: return False class Loan: ''' >>> import random >>> random.seed(2) # Setting seed to a fixed value, so you can predict what numbers the random module will generate >>> first_loan = Loan(4000) >>> first_loan Balance: $4000 >>> first_loan.loan_id 17412 >>> second_loan = Loan(6000) >>> second_loan.amount 6000 >>> second_loan.loan_id 22004 >>> third_loan = Loan(1000) >>> third_loan.loan_id 21124 ''' def __init__(self, amount): self.amount=amount self.loan_id=self.__getloanID def __str__(self): return f"Balance: ${self.amount}" __repr__ = __str__ @property def __getloanID(self): return random.randint(10000,99999) class Person: ''' >>> p1 = Person('Jason Lee', '204-99-2890') >>> p2 = Person('Karen Lee', '247-01-2670') >>> p1 Person(Jason Lee, ***-**-2890) >>> p2 Person(Karen Lee, ***-**-2670) >>> p3 = Person('Karen Smith', '247-01-2670') >>> p3 Person(Karen Smith, ***-**-2670) >>> p2 == p3
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help