Введение
В этом проекте вы научитесь реализовывать Шифр Цезаря, простую и широко известную технику шифрования. Шифр Цезаря использует метод подстановки, чтобы заменить английские символы в сообщении на символ, находящийся на N позиций позже или ранее в алфавитной последовательности.
👀 Предварительный просмотр
## Пример 1
text = "python"; encryption_text = "ravjqp"
## Пример 2
text = "pyThon"; encryption_text = "raVjqp"
## Пример 3
text = "Python31"; encryption_text = "Ravjqp31"
## Пример 4
text = None; encryption_text = None
🎯 Задачи
В этом проекте вы научитесь:
- настраивать проектную среду и создавать необходимые файлы;
- реализовывать функцию шифрования Цезаря для сдвига каждого английского символа в строке на 2 позиции вправо;
- обрабатывать различные типы ввода, включая английские символы, неанглийские символы и значения NULL;
- тестировать функцию шифрования Цезаря с использованием различных примеров ввода.
🏆 Достижения
После завершения этого проекта вы сможете:
- понять основные принципы шифрования Шифром Цезаря;
- реализовать функцию шифрования Цезаря на Python без использования стандартных или сторонних библиотек;
- развить навыки в манипуляции со строками, кодировке символов и условной логике;
- протестировать свой код, чтобы убедиться, что он соответствует требованиям проекта.
Реализовать шифрование Цезаря
В этом шаге вы реализуете функцию шифрования Цезаря.
Откройте файл
caesar_cipher.py.Измените функцию
caesar_encryption(text)для достижения требуемой функциональности:- Введите строку и сдвиньте каждый английский символ в строке на 2 позиции вправо.
- Преобразуйте только полутонкие английские символы, оставьте остальное без изменений.
- Регистр символов должен оставаться неизменным, например, A будет преобразован в C, а b будет преобразован в d.
Замените комментарий
"""TODO"""следующим кодом:
def caesar_encryption(text: str) -> str:
if text is None:
return None
encryption_text = ""
for char in text:
if char.isalpha() and char.isascii():
if char.islower():
encryption_text += chr((ord(char) - ord("a") + 2) % 26 + ord("a"))
else:
encryption_text += chr((ord(char) - ord("A") + 2) % 26 + ord("A"))
else:
encryption_text += char
return encryption_text
Данный код реализует алгоритм шифрования Цезаря, как описано в требованиях проекта.
Тестировать шифрование Цезаря
В этом шаге вы будете тестировать функцию шифрования Цезаря с использованием некоторых примеров ввода.
- Добавьте следующий код в конец файла
caesar_cipher.py:
if __name__ == "__main__":
test_input_text = input()
print(caesar_encryption(test_input_text))
- Сохраните файл
caesar_cipher.py. - Откройте терминал и перейдите в директорию
/home/labex/project. - Запустите скрипт
caesar_cipher.pyс использованием следующей команды:
python3 caesar_cipher.py
- Введите некоторый текст для тестирования и изучите зашифрованный вывод.
Проверить требования
В этом шаге вы проверите, соответствует ли ваша реализация требованиям проекта.
Проверьте требования проекта и убедитесь, что ваша функция
caesar_encryption(text):- Принимает строку и сдвигает каждый английский символ в строке на 2 позиции вправо.
- Преобразует только полутонкие английские символы, оставляя остальное без изменений.
- Сохраняет регистр символов, например, A преобразуется в C, а b преобразуется в d.
Протестируйте свою функцию с использованием предоставленных примеров для проверки:
## Пример 1
text = "python"; encryption_text = "ravjqp"
## Пример 2
text = "pyThon"; encryption_text = "raVjqp"
## Пример 3
text = "Python31"; encryption_text = "Ravjqp31"
## Пример 4
text = None; encryption_text = None
- Убедитесь, что ваша функция правильно обрабатывает все тестовые случаи.
Поздравляем! Вы завершили проект Шифр Цезаря. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь задавать их.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



