class Course: '''Class representing a course in which students can enroll.''' def __init__(self, department, number, name, limit): '''Create a new course with specified dept, num, name, enrollment limit.''' self.department = department self.number = number self.name = name self.limit = limit self.enrolled_students = set() def size(self): '''return the number of enrolled students in the course''' return len(self.enrolled_students) def add_student(self, new_student): '''adds new_student to the course''' if self.size() == self.limit: # can't add, at capacity print("Course is at capacity") return False else: # can add self.enrolled_students.add(new_student) print("Enrolled " + str(new_student) + " in " + self.name) return True class Student: '''Class representing a student with a name, an age, and a major.''' def __init__(self, name, age, major): '''Initializes a new student object.''' self.name = name self.age = age self.major = major self.courses = set() def add_course(self, course): '''Tries to enroll in course and returns whether enrollment was successful.''' if course in self.courses: print(self.name + " already enrolled in " + course.name) return False elif course.add_student(self): # try to enroll (may fail) self.courses.add(course) print(self.name + " is now enrolled in " + course.name) return True else: # tried to enroll, but failed print(self.name + " could not enroll in " + course.name) return False def drop_course(self, course_name): '''Tries to drop course_name and returns whether the drop was successful.''' if course_name in self.courses: self.courses.remove(course_name) return True else: return False def birthyear(self): '''Returns the birth year of the student.''' return 2015 - self.age def switch_major(self, new_major): self.major = new_major print(self.name + " changed major to " + self.major) def __str__(self): '''returns a textual representation of the student object''' return self.name + ", age " + str(self.age) course1 = Course('Biology', 423, 'Evolution of Squirrels', 30) course2 = Course('History', 270, 'Computers of the 12th Century', 20) course3 = Course('Government', 352, 'Galactic Empires', 1) student1 = Student('Alice', 19, 'math') student2 = Student('Bob', 18, 'english') student3 = Student('Charlie', 20, 'biology') print(student1) # calls __str__ method to convert to a string student1.add_course(course1) student1.add_course(course2) # ... etc ...