Практика 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.5student.display_info()# Student: Alice, Age: 20, Grades: [85, 90], Average: 87.5Задание 2: Наследование
Задача: Создайте иерархию классов для геометрических фигур:
- Базовый класс Shape с методами:
- area() (возвращает 0)
- perimeter() (возвращает 0)
- Класс Rectangle (наследует Shape):
- Атрибуты: width, height
- Переопределит методы area() и perimeter()
- Класс Circle (наследует Shape):
- Атрибуты: radius
- Переопределит методы area() и perimeter() (длина окружности)
Пример использования:
rect = Rectangle(3, 4)print(rect.area()) # 12print(rect.perimeter()) # 14
circle = Circle(5)print(circle.area()) # ~78.54print(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 Orwellprint(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) # 120account.history()# ['Deposit: +50', 'Withdraw: -30']