Exercise 6
This commit is contained in:
		
							parent
							
								
									bb9f20981a
								
							
						
					
					
						commit
						352173995f
					
				
							
								
								
									
										83
									
								
								ex6.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ex6.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | ||||
| class Person: | ||||
|     def __init__(self, name: str, age: int, email: str) -> None: | ||||
|         self._name: str = name | ||||
|         self._age: int = age | ||||
|         self._email: str = email | ||||
| 
 | ||||
|     def get_details(self) -> str: | ||||
|         return f"Name: {self._name}, Age: {self._age}, Email: {self._email}" | ||||
| 
 | ||||
| 
 | ||||
| class Student(Person): | ||||
|     def __init__(self, name: str, age: int, email: str, student_id: int) -> None: | ||||
|         super().__init__(name, age, email) | ||||
|         self._student_id: int = student_id | ||||
|         self._courses: list = [] | ||||
|         self._grades: dict[str, str] = {} | ||||
| 
 | ||||
|     def enroll_in_course(self, course: 'Course') -> None: | ||||
|         self._courses.append(course) | ||||
|      | ||||
|     def assign_grade(self, course_name: str, grade: str) -> None: | ||||
|         self._grades[course_name] = grade | ||||
| 
 | ||||
|     def get_grades(self) -> dict[str, str]:  | ||||
|         return self._grades | ||||
| 
 | ||||
| 
 | ||||
| class Teacher(Person): | ||||
|     def __init__(self, name: str, age: int, email: str, subject: str) -> None: | ||||
|        super().__init__(name, age, email) | ||||
|        self._subject: str = subject | ||||
| 
 | ||||
|     def assign_grade(self, student: Student, course: 'Course', grade: str) -> None: | ||||
|         student.assign_grade(course._course_name, grade) | ||||
| 
 | ||||
| class Course: | ||||
|     def __init__(self, course_name: str, course_code: str) -> None: | ||||
|         self._course_name: str = course_name | ||||
|         self._course_code: str = course_code | ||||
|         self._enrolled_students: list[Student] = [] | ||||
| 
 | ||||
|     def add_student(self, student: Student) -> None:  | ||||
|         self._enrolled_students.append(student) | ||||
|         student.enroll_in_course(self) | ||||
|      | ||||
|     def list_students(self) -> list[str]:  | ||||
|         return [x.get_details() for x in self._enrolled_students] | ||||
| 
 | ||||
| def main() -> None: | ||||
|     thorvald = Student("Thorvald", 28, "thorvald@example.com", 456) | ||||
|     johannes = Student("Johannes", 19, "Johannes@example.com", 35198) | ||||
|     tora = Student("Tora", 21, "Tora@example.com", 984555) | ||||
| 
 | ||||
|     ola = Teacher("Ola Normann", 56, "ola_normann@example.com", "FYS101") | ||||
|     kari = Teacher("Kari Normann", 104, "kari.normann@example.com", "MATH999") | ||||
| 
 | ||||
|     FYS101 = Course("Mekanikk", "FYS101") | ||||
|     MATH999 = Course("Matte", "MATH999") | ||||
| 
 | ||||
|     students = [thorvald, johannes, tora] | ||||
| 
 | ||||
|     for student in students: | ||||
|         FYS101.add_student(student) | ||||
|         MATH999.add_student(student) | ||||
| 
 | ||||
|     ola.assign_grade(thorvald, FYS101, "F") | ||||
|     ola.assign_grade(johannes, FYS101, "E") | ||||
|     ola.assign_grade(tora, FYS101, "A") | ||||
| 
 | ||||
|     kari.assign_grade(thorvald, MATH999, "B") | ||||
|     kari.assign_grade(johannes, MATH999, "D") | ||||
|     kari.assign_grade(tora, MATH999, "A+") | ||||
| 
 | ||||
|     print(f"{thorvald._name}'s grades: {thorvald.get_grades()}") | ||||
|     print(f"{thorvald._name}'s grades: {johannes.get_grades()}") | ||||
|     print(f"{tora._name}'s grades: {tora.get_grades()}") | ||||
| 
 | ||||
|     print("Students in FYS101:") | ||||
|     for student in FYS101.list_students(): | ||||
|         print(student) | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Trygve
						Trygve