Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab2 отчет

.docx
Скачиваний:
29
Добавлен:
28.06.2021
Размер:
77.61 Кб
Скачать

Федеральное агентство связи

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное

учреждение высшего образования

Московский технический университет связи и информатики»

 

Кафедра «Сетевых информационных технологий и сервисов»

 

Отчёт по лабораторной работе №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

Протестируем программу на трех списках:

  1. "10-02-2018_12:30", "10-02-2016_12:30", "10-02-2018_12:15" в режиме ASC

  2. "10-02-2018_12:30", "10-02-2016_12:30", "10-02-2018_12:15" в режиме DSC

  3. "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'

Объяснение паттерна:

  1. \b .. \b – определяем границы слова

  2. .* - любые символы сколько угодно раз до, между, и после захватываемых групп

  3. ([0-9]) – первая захватываемая группа – любая цифра

  4. (\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 – Результат работы программы

Вывод: В данной работе были разработаны:

  1. Программа, определяющая видимость «сцены» с определенного места в зале.

  2. Программа, позволяющая сортировать списки строк, представляющих даты в заданном формате, по возрастанию или убыванию.

  3. Шаблон для поиска строк, в которых присутствуют повторяющиеся цифры.

Соседние файлы в предмете Программирование на Python