Lab2 отчет
.docxФедеральное агентство связи
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное
учреждение высшего образования
Московский технический университет связи и информатики»
Кафедра «Сетевых информационных технологий и сервисов»
Отчёт по лабораторной работе №2 по дисциплине «Программирование на языке Python»
Выполнил студент группы
Москва, 2020
Задание 1: Написать функцию, которая определяет можно ли с текущего “места” увидеть “сцену”. Сцену можно увидеть с текущего места, если его номер строго больше, чем номер впередиидущего места. Функция должна возвращать True если все места могут увидеть сцену и False если хотя бы одно место не может увидеть сцену.
Р ешение: Разработаем блок-схему работы программы (рисунок 4).
Рисунок 1 – Блок-схема работы программы
На основе данной блок-схемы напишем программу на языке python. Текст программы представлен ниже.
def can_see_stage(hall):
for col in range(len(hall[0])):
curr_seat = hall[0][col]
for row in range(1, len(hall)):
if curr_seat >= hall[row][col]:
return False
else:
curr_seat = hall[row][col]
return True
Протестируем написанную функцию на трех массивах:
Пример 1: [1, 2, 3],
[4, 5, 6],
[7, 8, 9]
Пример 2: [1, 2, 3, 2, 1, 1],
[2, 4, 4, 3, 2, 2],
[5, 5, 5, 10, 4, 4],
[6, 6, 7, 6, 5, 5]
Пример 3: [1, 4, 3, 2, 1, 1],
[2, 4, 4, 3, 2, 2],
[5, 5, 5, 5, 4, 4],
[6, 6, 7, 6, 5, 5]
Р езультат работы программы представлен на рисунке 2.
Рисунок 2 – Результат работы программы
Исходя из результатов работы, можно сделать вывод о том, что программа корректно выполняет поставленную задачу.
Задание 2: Отсортировать список дат, даты подаются как строки. Формат дат DD-MM-YYYY_HH:MM. Критерии сортировки:
Год
Месяц
День
Часы
Минуты
На вход подается список lst и строка mode, реализовать функцию возвращающую:
если mode равен "ASC", список lst сортируется по возрастанию.
если mode равен "DSC", список lst сортируется по убыванию.
Решение: Так как из условия задания известно, в каком формате будут поступать строки, можно воспользоваться стандартной библиотекой python datetime, а конкретно методом strptime() класса datetime. Данный метод позволяет обработать строку по определенному шаблону и создать объект класса datetime. С помощью этого будет возможно отсортировать входной список с помощью метода sort() списка.
Код программы представлен ниже:
from datetime import datetime
def sort_dates(lst, mode):
pattern = "%d-%m-%Y_%H:%M"
if mode == "ASC":
lst.sort(key = lambda date: datetime.strptime(date, pattern))
else:
lst.sort(key = lambda date: datetime.strptime(date, pattern), reverse=True)
return lst
Протестируем программу на трех списках:
"10-02-2018_12:30", "10-02-2016_12:30", "10-02-2018_12:15" в режиме ASC
"10-02-2018_12:30", "10-02-2016_12:30", "10-02-2018_12:15" в режиме DSC
"09-02-2000_10:03", "10-02-2000_18:29", "01-01-1999_00:55" в режиме ASC
Р езультат работы программы представлен на рисунке 3:
Рисунок 3 – Результат работы программы
Задание 3: Написать регулярное выражение, которое находит строки с неповторяющимися числами.
Решение: Напишем регулярное выражение, которое находит строки с повторяющимися числами, а к результату его работы применим операцию «не»:
pattern = r'\b.*([0-9]).*(\1).*\b'
Объяснение паттерна:
\b .. \b – определяем границы слова
.* - любые символы сколько угодно раз до, между, и после захватываемых групп
([0-9]) – первая захватываемая группа – любая цифра
(\1) – повтор элемента из первой захватываемой группы
Напишем программу, которая будет выполнять поставленную задачу:
import re
if __name__ == "__main__":
pattern = r'\b.*([0-9]).*(\1).*\b'
word = input("Enter a word: ")
if bool(re.match(pattern, word)):
print("Word has recurring digits")
else:
print("Word doesn't have recurring digits")
Р езультат работы программы представлен на рисунках 4, 5 и 6
Р исунок 4 – Результат работы программы
Р исунок 5 – Результат работы программы
Рисунок 6 – Результат работы программы
Вывод: В данной работе были разработаны:
Программа, определяющая видимость «сцены» с определенного места в зале.
Программа, позволяющая сортировать списки строк, представляющих даты в заданном формате, по возрастанию или убыванию.
Шаблон для поиска строк, в которых присутствуют повторяющиеся цифры.