Advertisement
Tavxela

Python classes

Nov 6th, 2020
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.15 KB | None | 0 0
  1. """
  2. ვთქვათ, მოცემულია list-ი, რომელიც შედგება 100 სტუდენტის მონაცემისგან შემდგარი (შემდეგი
  3. მიმდევრობით: გვარი, სახელი, საგანი, შეფასება.) სტრიქონებისგან. შექმენით სტუდენტების კლასი,
  4. რომელსაც ექნება სტუდენტის (ზემოთ მოყვანილი) ატრიბუტები და მეთოდები: კონსტრუქტორი,
  5. ატრიბუტების სტრიქონული წარმოდგენის (__str__), საგანზე (რომელიც აუცილებლობის
  6. შემთხვევაში შეიძლება გამოყენებული იქნას როგორც ლექსიკონის გასაღები) შეფასების მიღების და
  7. შეფასების დაყენების. დაწერეთ პროგრამა, რომელიც მოცემული list-სგან შეავსებს კლასის
  8. ობიექტებისგან შემდგარ list-ს. პროგრამამ დაბეჭდოს საგნების მიხედვით სტუდენტების
  9. სტატისტიკა: რამდენმა ჩააბარა და რამდენი ჩაიჭრა.
  10. შენიშვნა. შესაბამისი სიმრავლის მიღება შესაძლებელია ქვემოთ მოყვანილი კოდით
  11. """
  12. from random import choice, randint
  13.  
  14. LNames = ['აბაშიძე','ანთიძე','არჩვაძე','ახალაია','ბაძაღუა','ბერიანიძე','ბერიშვილი','გვენცაძე','გიგაური','გიორგაძე','გოგალაძე','გოცირიძე','დალაქიშვილი','ვარდიძე','ზარანდია','თადუმაძე','კანკია','კაპანაძე','კასრაძე','კვარაცხელია','კვესელავა','კვინიკაძე','კოპაძე','კორძაია','კუსრაძე','ლაბაძე','ლაცაბიძე','მაისურაძე','მარჯანიძე','მაჩალაძე','მაცაბერიძე','მელია','მეტრეველი','მიქავა','მიქაძე','მოდებაძე','მონიავა']
  15.  
  16. GNames =['ანა','ანუკი','ბარბარე','გვანცა','დიანა','ეკა','ელენე','ვერონიკა','ვიქტორია','თათია','თამარი','თეა','თეკლე','თინიკო','იზაბელა','ია','იამზე','ლია','ლიკა','ლანა','ლამზირა','მარიკა','მანანა','მაია','მაკა','მარიამი','ნანა','ნანი','ნატა','ნატო','ნია','ნინო','ნონა','ოლიკო','სალომე','სოფიკო','ქეთევანი','ქრისტინე','შორენა','ხატია']
  17.  
  18. BNames =['ალეკო','ალიკა','ამირან','ანდრია','არჩილი','ასლანი','ბაჩუკი','ბექა''გიგა','გიგი','გიორგი','გოგა','დავითი','დათა','ერეკლე','თემური','იაკობ','ილია','ირაკლი','ლადო','ლაშა','მიხეილ','ნიკა','ოთარი','პაატა','რამაზ','რამინი','რატი','რაული','რევაზი','რომა','რომანი','საბა','სანდრო','სერგი','სიმონ','შალვა','შოთა','ცოტნე','ჯაბა','ჯემალ']
  19.  
  20. Subjects = ['კომპიუტერული უნარ-ჩვევები', 'ფიზიკის შესავალი','ქიმიის შესავალი','კალკულუსი II',
  21. 'პროგრამირების საფუძვლები','ობიექტზე ორიენტირებული პროგრამირება: C++','ალგორითმები I','ალგორითმები II','მონაცემთა სტრუქტურები']
  22.  
  23. firstname = "firstname"
  24. lastname = "lastname"
  25.  
  26. class Person:
  27.     def __init__(self, fullname:tuple=(firstname, lastname)):
  28.         self._fullname = {
  29.             firstname: fullname[0],
  30.             lastname: fullname[1]
  31.         }
  32.  
  33.         self._sex = 'M' if fullname[0] in BNames else 'F'
  34.        
  35.     def __str__(self):
  36.         return f"Name: {self._fullname[firstname]},\tLast Name: {self._fullname[lastname]}\nSex: {self._sex}"
  37.  
  38. class Student(Person):
  39.     def __init__(self, fullname :tuple, subject :dict=                              ("subject", []), gpa :int=0):
  40.         if not fullname:
  41.             super().__init__()
  42.         else:
  43.             super().__init__(fullname)
  44.         self.__subject = subject
  45.         self.__gpa = gpa
  46.  
  47.     @property
  48.     def subject(self):
  49.         return self.__subject
  50.  
  51.     def __str__(self):
  52.         return Person.__str__(self) + f"\n{self.__subject}\nGPA: {self.__gpa}"
  53.  
  54. def generatestudent():
  55.     fullname = (choice(BNames + GNames), choice(LNames))
  56.     points = [randint(0, 100) for _ in range(randint(1,5))]
  57.     subject = {choice(Subjects): points}
  58.     gpa = randint(0, 4)
  59.     return Student(fullname, subject, gpa)
  60.  
  61. students = [generatestudent() for _ in range(100)]
  62.  
  63. success = sum(1 if sum(next(iter(student.subject.values()))) >= 51 else 0 for student in students)
  64.  
  65. print(f"Successful students count: {success}")
  66. for student in students:
  67.     if sum(next(iter(student.subject.values()))) < 51:
  68.         print(f"{student}\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement