Python >

Разработка программных модулей

2024-2025 учебный год

Практические занятия

Практика 12 
Коллекции 
1. Дан файл, содержащий 10 слов (по одному слову в строке). Создать новый файл, который будет содержать эти же слова, но записанные в обратном порядке.
2. Дан файл, содержащий 10 слов (по одному слову в строке). Создать новый файл, который будет содержать по три слова в ряд (слова берутся из первого файла).
3. Подсчитать сколько раз данное слово встречается в файле.
4. Дан файл, содержащий 10 предложений. Создать новый файл, в котором заменить одно слово на другое.
5. Класс Dog. Создайте класс Dog. В нем должен быть метод bark, который выводит на экран: 'Woof-woof!'. Объявите экземпляр класса и вызовите у него метод bark. Подсказка. На этот раз не делайте метод класса статичным.
6. Терминаторы 1. Создайте класс Terminator и реализуйте в нем два метода:
1. say_greetings, печатающий фразу 'I am T-700, give me your ride and jacket!';
2. say_goodbye, печатающий фразу 'I'll be back!'.
Объявите два экземпляра вашего класс: T700 и T800. Вызовите каждый из методов для каждого экземпляра класса поочередно.
Тесты
Входные данные: --
Выходные данные:
I am T-700, give me your ride and jacket!
I'll be back!
I am T-700, give me your ride and jacket!
I'll be back!
7. Класс Constructor и его методы. Создайте класс Constructor и реализуйте в нем два метода:
1. add_attribute, принимающий на вход название атрибута в виде строки, а также значение этого атрибута. Данный метод создает новый атрибут у экземпляра класса и наполняет его значением.
2. get_attributes, который выводит информацию магического метода __dict__ для экземпляра класса.
Подсказка. Самостоятельно поищите информацию о методе setattr и воспользуйтесь им.
Код
# Ваш код
# ...
# не изменяйте код ниже, он нужен для проверки
a = Constructor()
a.get_attributes()  # Выводит {}
a.add_attribute('shape', 'circle')  # shape — название атрибута, circle — значение атрибута
a.add_attribute('cost', 150)
a.get_attributes()  # Выводит {'shape': 'circle', 'cost': 150}
8. Расстояние между точками. Создайте класс Point с одним методом set_coord, который принимает две координаты x и y и сохраняет их в соответствующие атрибуты экземпляра класса. Также создайте функцию get_dist вне класса, которая принимает на вход два аргумента — точки p1 и p2, являющиеся экземплярами класса Point и вычисляет расстояние между ними. Координаты для точек p1 и p2 должны передаваться пользователем на вход программы, а расстояние между точками должно быть выведено на экран в результате работы программы.
Подсказка. Помочь вычислить расстояние между точками (x1, y1) и (x2, y2) вам поможет теорема Пифагора. Вспомните, что извлечение корня это эквивалент возведения в степень 0,5.
Код
# Ваш код
# ...
# не изменяйте код ниже, он нужен для проверки
p1 = Point()
p2 = Point()
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
p1.set_coord(x1, y1)
p2.set_coord(x2, y2)
d = get_dist(p1, p2)
print(d)
Тесты
Входные данные:
0
3
3
7

Выходные данные:
5.0

Входные данные:
2
2
7
14

Выходные данные:
13.0 
9. Класс Pen — инкапсуляция, сокрытие данных, закрытые поля класса методы «геттеры» и «сеттеры». Выполнить пример 8.1 из лекции.
10. Выполнить по примеру 8.2 из лекции рефакторинг класса Pen, применив свойства property и лямбда-функцию.
11. Выполнить по примеру 8.3 из лекции рефакторинг класса Pen, изменив реализацию класса — для атрибута класса color вместо типа str использовать тип int.
12. Классы Car и Rect — свойство read-only. Написать программу по примерам 8.4 и 8.5 из лекции.
Домашнее задание
Коллекции. 
Параметризованные классы. 
Примеры программ с коллекциями.
Списки. 
Словари. 
Очереди. 
Стеки. 
Деревья. 
Графы. 
Гиперсети.