Unit 8
Source Code
import counter
import bankaccount
import collegecourse
def main():
done = False
print("Main Function")
while not done:
print("Menu")
print("E1 - Example 1")
print("E2 - Example 2")
print("E3 - Example 3")
print("E4 - Example 4")
choice = input("Choice: ").upper()
match choice:
case "E1":
example1()
case "E2":
example2()
case "E3":
example3()
case "E4":
example4()
case "Q":
print("Quitting!")
done = True
case _:
print("Invalid, try again!")
# define Example 1 Function
def example1():
print("Example 1")
# create counter object
tally = counter.Counter()
# call the click method on the object
tally.click()
tally.click()
# print tally
print(tally)
# call the reset method on the object
tally.reset()
# print tally
print(tally)
print(repr(tally))
# define Example 2 Function
def example2():
print("Example 2")
c1 = counter.Counter()
c2 = counter.Counter()
for i in range(3):
c1.click()
for i in range(5):
c2.click()
print(c1)
print(c2)
# define Example 3 Function
def example3():
print("Example 3")
sam = bankaccount.BankAccount("Sam", 1000)
print(sam.get_balance())
# Accessing the private attribute via name mangling
print(sam._BankAccount__balance)
# Modifying the private attribute via name mangling
sam._BankAccount__balance = 2000
print(sam.get_balance())
print(sam)
print(repr(sam))
# define Example 4 Function
def example4():
print("Example 4")
# Example of usage:
semester = input("Semester: ")
course_number = input("Course Number: ")
course_name = input("Course Name: ")
course_instructor = input("Instructor: ")
course_daytime = input("Course Day/Time: ")
cps3320 = collegecourse.CollegeCourse(semester, course_number, course_name, course_instructor, course_daytime)
for x in range(3):
assignment = input("Name of Assignment: ")
grade = input("Grade: ")
cps3320.add_grade(assignment, grade)
print(cps3320)
print(repr(cps3320))
main()
counter.py
# header
class Counter:
# constructor
def __init__(self):
# initialize attribute
self.count = 0
# methods
def click(self):
self.count = self.count + 1
def reset(self):
self.count = 0
# __str__ method
def __str__(self):
return "Current count: " + str(self.count)
# __repr__ method
def __repr__(self):
return f"count={self.count}"
bankaccount.py
# header
class BankAccount:
# constructor
def __init__(self, name, initial_balance):
self.name = name
self.__balance = initial_balance
# methods
def deposit(self, amount):
self.__balance += amount
def get_balance(self):
return self.__balance
def __str__(self):
output = "Name: " + self.name + "\n"
output += "Balance: $" + str(self.get_balance())
return output
def __repr__(self):
return f"name='{self.name}', initial_balance={self.get_balance()}"
collegecourse.py
class CollegeCourse:
def __init__(self, semester, course_number, course_name, instructor, time):
self.semester = semester
self.course_number = course_number
self.course_name = course_name
self.instructor = instructor
self.time = time
self.grades = {} # Dictionary to store grades with assignment names as keys
def add_grade(self, assignment_name, grade):
self.grades[assignment_name] = grade
def __str__(self):
"""Returns a user-friendly string representation of the CollegeClass object."""
grade_list = "\n".join([f" {assignment}: {grade}" for assignment, grade in self.grades.items()])
return (f"Semester: {self.semester}\n"
f"Course Number: {self.course_number}\n"
f"Course Name: {self.course_name}\n"
f"Instructor: {self.instructor}\n"
f"Time: {self.time}\n"
f"Grades:\n{grade_list}")
def __repr__(self):
"""Returns a formal string representation of the CollegeClass object, useful for debugging."""
return (f"CollegeCourse(semester='{self.semester}', course_number='{self.course_number}', "
f"course_name='{self.course_name}', instructor='{self.instructor}', time='{self.time}', "
f"grades={self.grades})")
Last updated