Python Практика

Практика Python

Теорія – це коли все відомо, але нічого не працює.
Практика – це коли все працює, але ніхто не знає чому.
Ми ж поєднуємо теорію та практику: нічого не працює і ніхто не знає чому!

Альберт Ейнштейн

Платформа replit - ide у браузері

Де можна попрактикуватися - checkio

Завдання

1. Human and Planet


Створити клас Human

  • параметри name, date of birth
  • метод to_str
  • метод get_age

Створити клас Planet

  • параметр name
  • метод to_str
  • метод add_humans([Human])
  • метод get_count(повертає кількість людей)

При виконані скрипту повинні відпрацювати всі методи класів.

Додати до класів наступні методи

  1. __init__
  2. __str__
  3. методи порівняння
  4. зробити міксин з __new__ змінити так, щоб логував створення класу

2. User and Admin


Умова: Розробити клас “Користувач” (User) та “Адміністратор” (Admin), які будуть представляти користувачів системи.

  1. Створіть клас “Користувач” (User) з наступними властивостями:

    • Ім’я (name) - рядок, що містить ім’я користувача.
    • Вік (age) - ціле число, що представляє вік користувача.
    • Електронна пошта (email) - рядок, що містить електронну адресу користувача.
  2. Додайте методи до класу “Користувач” (User):

    • get_name(self): повертає ім’я користувача.
    • get_age(self): повертає вік користувача.
    • get_email(self): повертає електронну адресу користувача.
    • set_name(self, new_name): встановлює нове ім’я користувача.
    • set_age(self, new_age): встановлює новий вік користувача.
    • set_email(self, new_email): встановлює нову електронну адресу користувача.
  3. Напишіть метод print_info(self), який виводитиме інформацію про користувача у наступному форматі: “Користувач: {ім’я}. Вік: {вік}. Електронна пошта: {електронна_пошта}”.

  4. Створіть об’єкт класу “Користувач” і протестуйте всі методи, переконавшись, що вони працюють коректно.

  5. Доповніть клас “Користувач” (User) новими властивостями та методами, які будуть відповідати за інформацію про користувача, такі як:

    • Місце проживання (address) - рядок, що містить адресу користувача.
    • Номер телефону (phone_number) - рядок, що містить номер телефону користувача.
    • Метод set_address(self, new_address): встановлює нове місце проживання користувача.
    • Метод set_phone_number(self, new_phone_number): встановлює новий номер телефону користувача.
  6. Додайте методи get_address(self) та get_phone_number(self), які повертатимуть місце проживання та номер телефону користувача відповідно.

  7. Напишіть метод print_additional_info(self), який буде виводити додаткову інформацію про користувача у наступному форматі: “Користувач: {ім’я}. Вік: {вік}. Електронна пошта: {електронна_пошта}. Місце проживання: {місце_проживання}. Номер телефону: {номер_телефону}”.

  8. Протестуйте всі нові властивості та методи, створивши новий об’єкт класу “Користувач” і викликавши відповідні методи для встановлення та отримання значень.

  9. Використовуючи клас “Користувач” (User), створіть систему, яка зберігатиме дані про кілька користувачів. Додайте методи для додавання нових користувачів до системи, видалення користувачів та отримання списку всіх користувачів.

  10. Напишіть метод get_all_users(self), який повертатиме список усіх користувачів у системі.

  11. Додайте метод remove_user(self, user_id), який буде видаляти користувача з системи за його унікальним ідентифікатором (user_id).

  12. Протестуйте роботу методів для додавання, видалення та отримання користувачів з системи.

  13. Створіть новий клас “Адміністратор” (Admin), який успадковуватиме властивості та методи класу “Користувач” (User).

  14. Додайте нову властивість до класу “Адміністратор” (Admin) - “рівень доступу” (access_level), який буде представляти рівень привілеїв адміністратора (наприклад, 1 - звичайний адміністратор, 2 - головний адміністратор).

  15. Напишіть метод get_access_level(self), який повертатиме рівень доступу адміністратора.

  16. Перевизначте метод print_info(self) в класі “Адміністратор” (Admin), так щоб він виводив інформацію про адміністратора з додатковим полем “Рівень доступу”.

  17. Створіть об’єкт класу “Адміністратор” (Admin) і викличте методи для встановлення, отримання та виведення інформації про адміністратора.

  18. Протестуйте успадкування, створивши кілька об’єктів класу “Адміністратор” (Admin) та викликавши методи як від батьківського класу “Користувач” (User), так і з додатковими методами та властивостями, що є лише у класі “Адміністратор” (Admin).

  19. Розширте систему користувачів, щоб вона підтримувала як звичайних користувачів, так і адміністраторів. Застосуйте успадкування, створивши відповідні класи та методи для додавання, видалення та отримання користувачів.

  20. Протестуйте роботу системи, викликаючи методи для додавання, видалення та отримання користувачів як звичайних користувачів, так і адміністраторів.

  21. Додати для set_методів власні винятки і замість print викликате саме їх.

  22. Розділити код на файли.

Person -> Student -> Teacher

Person
Створіть клас Person, який представляє особу. Клас повинен мати наступні атрибути:

  • first_name (ім’я)
  • last_name (прізвище)
  • age (вік)

Клас повинен мати метод __init__ для ініціалізації атрибутів, а також метод get_full_name для отримання повного імені особи.

Student
Створіть клас Student, який успадковує клас Person. Клас Student повинен мати додатковий атрибут:

  • student_id (ідентифікатор студента)

Додайте метод __init__ для ініціалізації атрибуту student_id. Розширте метод get_full_name для включення ідентифікатора студента у повне ім’я.

Teacher Створіть клас Teacher, який також успадковує клас Person. Клас Teacher повинен мати додатковий атрибут:

  • employee_id (ідентифікатор працівника)

Додайте метод __init__ для ініціалізації атрибуту employee_id. Створіть новий метод teach, який буде друкувати повідомлення про те, що вчитель надає урок.

Завдання для командної роботи:

Ваша команда повинна працювати разом над цим завданням:

  1. Спільно обговоріть структуру класів і розділіть завдання між членами команди.
  2. Кожен член команди повинен реалізувати один із трьох класів.
  3. Після того як всі класи реалізовано, об’єднайте їх у одному скрипті.
  4. Створіть об’єкти для кожного класу та викличте відповідні методи для перевірки правильності реалізації.