Перейти к содержимому

Практика 2. Программирование на языке высокого уровня

Задание 1: Базовый класс

Задача: Создайте класс Student с следующими элементами:

  • Атрибуты: name (строка), age (целое число), grades (список оценок)
  • Метод add_grade(grade): добавляет оценку в список grades
  • Метод average_grade(): возвращает средний балл
  • Метод display_info(): выводит информацию в формате: “Student: {name}, Age: {age}, Grades: {grades}, Average: {average}”

Пример использования

student = Student("Alice", 20)
student.add_grade(85)
student.add_grade(90)
print(student.average_grade()) # 87.5
student.display_info()
# Student: Alice, Age: 20, Grades: [85, 90], Average: 87.5

Задание 2: Наследование

Задача: Создайте иерархию классов для геометрических фигур:

  1. Базовый класс Shape с методами:
  • area() (возвращает 0)
  • perimeter() (возвращает 0)
  1. Класс Rectangle (наследует Shape):
  • Атрибуты: width, height
  • Переопределит методы area() и perimeter()
  1. Класс Circle (наследует Shape):
  • Атрибуты: radius
  • Переопределит методы area() и perimeter() (длина окружности)

Пример использования:

rect = Rectangle(3, 4)
print(rect.area()) # 12
print(rect.perimeter()) # 14
circle = Circle(5)
print(circle.area()) # ~78.54
print(circle.perimeter()) # ~31.42

Задание 3: Композиция

Задача: Создайте класс Library:

Атрибут: books (список объектов Book) Методы:

  • add_book(book): добавляет книгу
  • find_books_by_author(author): возвращает список книг указанного автора
  • list_books(): выводит все книги в формате “Title: {title}, Author: {author}” Класс Book должен иметь атрибуты title и author.

Пример использования:

library = Library()
library.add_book(Book("1984", "George Orwell"))
library.add_book(Book("Animal Farm", "George Orwell"))
library.list_books()
# Title: 1984, Author: George Orwell
# Title: Animal Farm, Author: George Orwell
print(library.find_books_by_author("George Orwell")) # список из 2 книг

Дополнительное задание: Реализуйте класс BankAccount (доп)

Приватные атрибуты: __balance, __transactions Методы:

  • deposit(amount): пополнение счета
  • withdraw(amount): снятие (если достаточно средств)
  • history(): вывод последних 5 транзакций Свойство balance только для чтения

Исключение InsufficientFundsError при попытке снять больше, чем есть

Пример использования:

account = BankAccount(100)
account.deposit(50)
account.withdraw(30)
print(account.balance) # 120
account.history()
# ['Deposit: +50', 'Withdraw: -30']