Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ Витте

3.2 Задания для выполнения в рамках курсовой работы.

Общие ключевые требования ко всем заданиям (при нарушении баллы за задание обнуляются):

— Для реализации заданий 1, 2 и 4 можно использовать библиотеки, встроенные в Python

— Для реализации задания 3 так же используется библиотека flask

— В заданиях 1-3 необходимо использовать свой студенческий ID — 8 цифр вида 7ххххххх.

3.2.1. Задание № 1

Модуль шифрования

БЕЗ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА

формулировка

Реализуйте функцию сохранения зашифрованных сообщений

Создайте модуль Python, в котором будет две функции — encrypt и decrypt. Функция encrypt должна получать на вход текстовое сообщение, шифруя его с помощью кода Цезаря (сдвиг вправо на заданное число символов).

Функция decrypt должна получать на вход текстовое сообщение, дешифруя его с помощью кода Цезаря (сдвиг влево на заданное число символов).

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

Методические указания

Размер сдвига определяется остатком от деления Вашего студенческого ID на 11. То есть, например, для ID 70525968 сдвиг равен 70525968 % 11, то есть 7.

Студенческий ID должен при вызове обеих функций передаваться в них как параметр по умолчанию с ключом sid. То есть функцию можно вызвать так:

encrypt(«сообщение»)

или так:

encrypt(«сообщение», sid=70525968)

Аналогично для функции decrypt

Шифруются символы латинского и кириллического алфавитов, цифры, а так же символы пунктуации.

Считается, что символы расположены по кругу, в котором сначала идут цифры от 0 до 9, потом малые русские буквы, потом большие русские буквы, потом малые латинские, потом большие латинские, потом символы пунктуации. Символы пунктуации взяты такие же и в таком же в порядке, как в константе punctuation встроенного в python модуля string. После символов пунктуации идёт пробел, после чего круг замыкается и снова идут цифры от 0 до 9 и т.д.

То есть для студенческого ID выше, символ ‘э’ будет зашифрован со сдвигом 7 по описанному выше кругу, а значит алгоритм шифрования пропустит последовательность символов «эюяАБВГ» и даст символ «Д». Аналогичным образом, если шифруется символ «/» (третий с конца в string.punctuation), то алгоритм пропустит последовательность символов «|}~ 012» и выдаст ‘3’.

Таким образом, для студента с ID 70525968 вызов вида:

encrypt(«Верю: справитесь»)

должен вернуть строку «46201131213а463д», а вызов вида:

decrypt(«46201131213а463д»)

должен вернуть строку «Верю: справитесь»

В модуле должен быть блок

if __name__ == «__main__»:

в котором тестируется работа функций encrypt и decrypt с разными вариантами вызовов, для каждой проверяется не менее 3 разных тестовых кейсов. Результаты печатаются в консоль и должны быть отражены в отчёте по курсовой работе.

Варианты вызовов берутся из файлов encrypt.txt и decrypt.txt. Результаты пишутся в файлы encrypt_result.txt и decrypt_result.txt. Содержимое файлов с результатами так же дублируется как распечатки в консоль.

Требования для задания 1:

Программу сохранить под именем cypher.py. Отсутствуие модуля с таким названием считается критической ошибкой при проверке;

Функция encrypt должна находится в верхней части модуля — сразу после необходимых импортов. Функция decrypt — сразу за ней;

Блок if __name__ == “__main__” должен срабатывать при прямом запуске модуля cypher.py и должен выводить распечатки результатов вызова функций в не менее чем 6 тестовых кейсах;

Блок if __name__ == “__main__” не должен срабатывать при импорте модуля в другие модули. Такое срабатывание считается грубой ошибкой;

Отсутствие параметра sid, его неверное назначение, или его неверное использование в функциях считаются грубыми ошибками.

Процедура проверки

Вызов модуля напрямую с использованием проверочных вариантов файлов encrypt.txt и decrypt.txt. Импорт модуля и вызов отдельно функций encrypt и decrypt с разнообразными параметрами.

Ожидаемые результаты

При вызове модуля напрямую – распечатки результатов в файлах encrypt_result.txt и decrypt_result.txt. Результаты должны соответствовать содержмиому файлов encrypt.txt и decrypt.txt и ID студента согласно спецификации.

При импорте модуля — отсутствие распечаток тестов и соответствие результатов проверочных вызовов функций спецификации.

Оцените статью:
Помощь студентам дистанционного обучения: примеры работ, ВУЗы, консультации
Заявка на расчет