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 студента согласно спецификации. При импорте модуля — отсутствие распечаток тестов и соответствие результатов проверочных вызовов функций спецификации. |