Advertisement
Tavxela

Untitled

Jan 8th, 2022
996
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.84 KB | None | 0 0
  1. import random
  2.  
  3. LNames = ['აბაშიძე', 'ანთიძე', 'არჩვაძე', 'ახალაია', 'ბაძაღუა',
  4.           'ბერიანიძე', 'ბერიშვილი', 'გვენცაძე', 'გიგაური', 'გიორგაძე', 'გოგალაძე']
  5. GNames = [
  6.     'ანა', 'ანუკი', 'ბარბარე', 'გვანცა', 'დიანა', 'ეკა', 'ელენე', 'ვერონიკა', 'ვიქტორია', 'თათია', 'თამარი', 'თეა', 'თეკლე', 'თინიკო',
  7.     'იზაბელა', 'ია', 'იამზე', 'ლია', 'ლიკა', 'ლანა', 'ლამზირა', 'მარიკა', 'მანანა', 'მაია', 'მაკა', 'მარიამი', 'ნანა', 'ნანი', 'ნატა', 'ნატო', 'ნია',
  8.     'ნინო', 'ნონა', 'ოლიკო', 'სალომე', 'სოფიკო'
  9. ]
  10. BNames = ['ალეკო', 'ალიკა', 'ამირან', 'ანდრია', 'არჩილი', 'ასლანი', 'ბაჩუკი',
  11.           'ბექა''გიგა', 'გიგი', 'გიორგი', 'გოგა', 'დავითი', 'დათა', 'ერეკლე', 'თემური']
  12. Names = GNames + BNames
  13. Subjects = ['კომპიუტერული უნარ-ჩვევები II', 'ფიზიკის შესავალი', 'ქიმიის შესავალი', 'კალკულუსი II',
  14.             'პროგრამირების საფუძვლები', 'ობიექტზე ორიენტირებული პროგრამირება: C++', 'ალგორითმები II', 'მონაცემთა სტრუქტურები']
  15. Prerequisites = ['კომპიუტერული უნარ-ჩვევები I', 'ბუნება', 'მეცნიერება', 'კალკულუსი I',
  16.                  'პროგრამირების შესავალი', 'c++ შესავალი', 'ალგორითმები I', 'მონაცემთა ანალიზი']
  17. prereq_dict = dict(zip(Subjects, Prerequisites))
  18.  
  19.  
  20. class Student:
  21.     def __init__(self, fname, lname) -> None:
  22.         self.fname = fname
  23.         self.lname = lname
  24.  
  25.     def __str__(self) -> str:
  26.         return self.__repr__()
  27.  
  28.     def __repr__(self) -> str:
  29.         return f'<{self.fname} {self.lname}>'
  30.  
  31.  
  32. class Subject:
  33.  
  34.     def __init__(self, sub_name) -> None:
  35.         self.sub_name = sub_name
  36.         self.students: list[dict[str, Student]] = []
  37.         self.prerequisites = []
  38.    
  39.     def add_pre_requisite(self):
  40.         pass
  41.  
  42.     def enroll(self, student: Student, score: float = 0):
  43.         self.__validate_student(student)
  44.  
  45.         for pr in self.prerequisites:
  46.             if student not in [st['student'] for st in pr.students]:
  47.                 raise Exception(f'{student} is not able to take {self.sub_name} subject')
  48.    
  49.         self.students.append(
  50.             {
  51.                 'student': student,
  52.                 'score': score
  53.             }
  54.         )
  55.    
  56.     def __validate_student(self, student: Student):
  57.         if not isinstance(student, Student):
  58.             raise Exception('object must be a Student instance!')
  59.  
  60.     def pass_or_fail(self, student: Student):
  61.         self.__validate_student(student)
  62.  
  63.         for st in self.students:
  64.             if st['student'] is student:
  65.                 if st['score'] < 51:
  66.                     print('fail')
  67.                 else:
  68.                     print('pass')
  69.                 return
  70.  
  71.     def __repr__(self) -> str:
  72.         return f'Subject Name: {self.sub_name}'
  73.  
  74.  
  75. subject_list = [Subject('Calculus II'), Subject('Calculus I')]
  76.  
  77. calculus_I = subject_list[1]
  78. calculus_II = subject_list[0]
  79. # calculus_II.prerequisites.append(calculus_I)
  80.  
  81. student_1 = Student(Names[random.randint(0, len(Names)-1)],
  82.                     LNames[random.randint(0, len(LNames)-1)])
  83.  
  84. # calculus_I.enroll(student_1, 65)
  85.  
  86. calculus_II.enroll(student_1, 65)
  87.  
  88. print(calculus_II)
  89. print(calculus_II.students)
  90.  
  91. calculus_II.pass_or_fail(student_1)
  92.  
  93.  
  94.  
  95. # student_list = []
  96. # for i in range(0,101):
  97. #     student_name = f'student_{i}'
  98. #     student_name = Students(Names[random.randint(0, len(Names)-1)], LNames[random.randint(0, len(LNames)-1)], Subjectss[random.randint(0,len(Subjectss)-1)],random.randint(20,100))
  99. #     student_list.append(student_name)
  100.  
  101. # subject_1 = Subjects(Subjectss[random.randint(1,len(Subjectss)-1)],student_list[random.randint(2,101)],prereq_dict[Subjectss[random.randint(1,len(Subjectss)-1)]])
  102.  
  103. # print(f'Subject Name: {subject_1.sub_name},\nPrerequisite Name: {subject_1.prerequisite}')
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement