Практические занятия
Практика 13
Использование регулярных выражений
1.
Создать файл, содержащий 50 чисел (положительных и отрицательных).
Создать два новых файла: в одном содержатся положительные числа, в другом отрицательные.
2.
Записать по 20 чисел, сгенерированных с помощью генератора псевдослучайных чисел (ГПЧ),
в два файла в столбик. Определить общие элементы, записать их в новый файл.
3.
Вывести дамп бинарных файлов, например в форматах ZIP или PNG, в консоль.
Пример 1
with open('input.zip', mode='rb') as bin_file:
data3 = bin_file.read(55)
data = bin_file.read()
print(type(data))
print(data)
print(f"input.zip - 55 bytes: {data3}")
print(f"input.zip - Hex dump 55 bytes: {data3.hex()}")
print(f"input.zip - Hex dump 55 bytes: {data3.hex(sep=' ', bytes_per_sep=-2)}")
chunk_size = 8
with open('input.zip', mode='rb') as bin_file:
while True:
chunk = bin_file.read(chunk_size)
if not chunk:
break
print(f"Read {len(chunk)} bytes: {chunk}")
Пример 2
import pickle
with open('binary_file.dat', 'rb') as file:
data = pickle.load(file)
print(data)
Пример 3
https://www.geeksforgeeks.org/python-write-bytes-to-file
https://www.geeksforgeeks.org/reading-binary-files-in-python
https://pythonguides.com/python-read-a-binary-file
https://www.pythonmorsels.com/reading-binary-files-in-python
https://docs-python.ru/tutorial/osnovnye-vstroennye-tipy-python/tip-dannyh-bytes-bajtovye-stroki
3.
Терминаторы 2.
В программе объявлен класс Terminator с двумя методами, выводящими на экран приветственное
и прощальное сообщения терминатора. Также объявлены 2 экземпляра класса
и для каждого вызваны оба метода класса. Несмотря на то, что терминаторы
разные — их приветственные сообщения неразличимы. Модернизируйте программу,
приняв от пользователя имя для каждого из терминаторов и передав это имя
в качестве аргумента для метода say_greetings(). Не меняйте порядок вызова методов.
Код
class Terminator:
def say_greetings(self):
print('I am T-700, give me your ride and jacket!')
def say_goodbye(self):
print("I'll be back!")
T700 = Terminator()
T800 = Terminator()
T700.say_greetings()
T700.say_goodbye()
T800.say_greetings()
T800.say_goodbye()
Тесты
Входные данные:
T-700
T-800
Выходные данные:
I am T-700, give me your ride and jacket!
I'll be back!
I am T-800, give me your ride and jacket!
I'll be back!
Входные данные:
Лелик
Болик
Выходные данные:
I am Лелик, give me your ride and jacket!
I'll be back!
I am Болик, give me your ride and jacket!
I'll be back!
4.
Терминаторы 3.
В программе объявлен класс Terminator с двумя методами, выводящими
на экран приветственное и прощальное сообщения терминатора.
Также объявлены 2 экземпляра класса и для каждого вызваны оба метода класса.
Несмотря на то, что имена терминаторов теперь разные — они никак не связаны
с экземплярами класса (это просто отдельно живущие переменные).
Модернизируйте программу, добавив в класс атрибут для хранения имени терминатора.
Пуcть имя для каждого из терминаторов будет передано пользователем на вход программы.
Не меняйте порядок вызова методов.
Подсказка.
Теперь нет необходимости передавать имя терминатора при вызове метода say_greetings().
Код
class Terminator:
def say_greetings(self, name):
print('I am', name, 'give me your ride and jacket!')
def say_goodbye(self):
print("I'll be back!")
T700 = Terminator()
T800 = Terminator()
T700_name = input()
T800_name = input()
T700.say_greetings(T700_name)
T700.say_goodbye()
T800.say_greetings(T800_name)
T800.say_goodbye()
Тесты
Входные данные:
T-700
T-800
Выходные данные:
I am T-700, give me your ride and jacket!
I'll be back!
I am T-800, give me your ride and jacket!
I'll be back!
Входные данные:
Лелик
Болик
Выходные данные:
I am Лелик, give me your ride and jacket!
I'll be back!
I am Болик, give me your ride and jacket!
I'll be back!
5.
Класс и его инициализатор 1.
Создайте класс Motorbike, имеющий инициализатор __init__,
который принимает объем двигателя и год выпуска мотоцикла
в качестве аргументов и сохраняет их в атрибутах engine и year.
Объем двигателя и год выпуска мотоцикла передаются на вход программы пользователем.
Код
# Ваш код
# ...
# не изменяйте код ниже, он нужен для проверки
v = float(input())
y = int(input())
bike = Motorbike(v, y)
print(bike.engine, bike.year)
Тесты
Входные данные:
1.6
2008
Выходные данные:
1.6 2008
Входные данные:
2
2010
Выходные данные:
2.0 2010
6.
Класс и его инициализатор 2.
Создайте класс Car, имеющий инициализатор __init__, который принимает
и инициализирует атрибуты класса: brand, model, price, а также
атрибут name — строку следующего вида: <Брэнд> <Модель>.
Брэнд, модель и цена автомобиля передаются на вход программы пользователем.
# Ваш код
# ...
# не изменяйте код ниже, он нужен для проверки
b = input()
m = input()
p = int(input())
tesla = Car(b, m, p)
print(tesla.price)
print(tesla.name)
Тесты
Входные данные:
Tesla
Model X
200000
Выходные данные:
200000
Tesla Model X
Входные данные:
Lada
Kalina
100000
Выходные данные:
100000
Lada Kalina
7.
Использование регулярных выражений. Выполнить примеры по ссылке.
Федоров Д. Ю. Программирование на Python. — Москва : Издательство Юрайт, 2025. — 187 с.
11.2 Регулярные выражения, с. 146 148
-
Перейти.
urait.ru Федоров Д. Ю. Программирование на Python
-
Перейти.
dfedorov.spb.ru Анализ данных на языке Python
-
Перейти.
dfedorov.spb.ru
Регулярные выражения в Python и pandas [CoLab]
-
Перейти.
dfedorov.spb.ru
Шпаргалка по регулярным выражениям (на русском языке) [PDF]
-
Перейти.
dfedorov.spb.ru
Шпаргалка по регулярным выражениям на Python [PDF]
8. Структура Book. Выполнить пример 10.1 из лекции.
9. Структура с декоратором @dataclass. Выполнить пример 10.2 из лекции.
10. TXT-файл. Числа в одну строку. Выполнить пример 10.3 из лекции.
Домашнее задание
Использование регулярных выражений.
Строки с экранированием символов.
Применение квантификаторов.
Программы поиска точного совпадение текста.
Алгоритм поиска словоформ в тексте.
Проверка на соответствие строки формату.
Замена строк.
-
Перейти Стандартный документ «Описание программы»