Реализация шифрования Цезаря

PythonBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь реализовывать Шифр Цезаря, простую и широко известную технику шифрования. Шифр Цезаря использует метод подстановки, чтобы заменить английские символы в сообщении на символ, находящийся на 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 без использования стандартных или сторонних библиотек;
  • развить навыки в манипуляции со строками, кодировке символов и условной логике;
  • протестировать свой код, чтобы убедиться, что он соответствует требованиям проекта.

Реализовать шифрование Цезаря

В этом шаге вы реализуете функцию шифрования Цезаря.

  1. Откройте файл caesar_cipher.py.

  2. Измените функцию caesar_encryption(text) для достижения требуемой функциональности:

    • Введите строку и сдвиньте каждый английский символ в строке на 2 позиции вправо.
    • Преобразуйте только полутонкие английские символы, оставьте остальное без изменений.
    • Регистр символов должен оставаться неизменным, например, A будет преобразован в C, а b будет преобразован в d.
  3. Замените комментарий """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

Данный код реализует алгоритм шифрования Цезаря, как описано в требованиях проекта.

Тестировать шифрование Цезаря

В этом шаге вы будете тестировать функцию шифрования Цезаря с использованием некоторых примеров ввода.

  1. Добавьте следующий код в конец файла caesar_cipher.py:
if __name__ == "__main__":
    test_input_text = input()
    print(caesar_encryption(test_input_text))
  1. Сохраните файл caesar_cipher.py.
  2. Откройте терминал и перейдите в директорию /home/labex/project.
  3. Запустите скрипт caesar_cipher.py с использованием следующей команды:
python3 caesar_cipher.py
  1. Введите некоторый текст для тестирования и изучите зашифрованный вывод.

Проверить требования

В этом шаге вы проверите, соответствует ли ваша реализация требованиям проекта.

  1. Проверьте требования проекта и убедитесь, что ваша функция caesar_encryption(text):

    • Принимает строку и сдвигает каждый английский символ в строке на 2 позиции вправо.
    • Преобразует только полутонкие английские символы, оставляя остальное без изменений.
    • Сохраняет регистр символов, например, A преобразуется в C, а b преобразуется в d.
  2. Протестируйте свою функцию с использованием предоставленных примеров для проверки:

## Пример 1
text = "python"; encryption_text = "ravjqp"
## Пример 2
text = "pyThon"; encryption_text = "raVjqp"
## Пример 3
text = "Python31"; encryption_text = "Ravjqp31"
## Пример 4
text = None; encryption_text = None
  1. Убедитесь, что ваша функция правильно обрабатывает все тестовые случаи.

Поздравляем! Вы завершили проект Шифр Цезаря. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь задавать их.

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться