Расшифровка треугольного шифра

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь расшифровывать треугольный шифр, который представляет собой метод расположения символов в прямоугольный треугольник. Скрытое сообщение содержится в последнем символе каждой строки, и эти последние символы объединяются, чтобы образовать переданную информацию.

👀 Предварительный просмотр

text = " LcadcbsdxEsdxcx"
decryption_text = "LabEx"

🎯 Задачи

В этом проекте вы научитесь:

  • Как создать функцию для расшифровки треугольного шифра
  • Как обрабатывать пустой или None ввод
  • Как реализовать логику извлечения последнего символа каждой строки и их объединения

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разобраться в концепции треугольного шифра
  • Реализовать функцию для расшифровки треугольного шифра
  • Обрабатывать различные типы ввода, включая пустой или None ввод
  • Применить свои знания о манипуляции со строками для решения реальной проблемы

Настройка функции расшифровки треугольника

Ниже приведен пример для лучшего понимания. Дан зашифрованный текст: "LcadcbsdxEsdxcx", когда он заполняется в прямоугольный треугольник, он выглядит так:

L
c a
d c b
s d x E
s d x c x

Извлекая последний символ каждой строки и объединяя их, мы получаем расшифрованное сообщение: "LabEx".

В этом шаге вы научитесь создавать функцию triangle_decryption() в файле triangle.py.

  1. Откройте файл triangle.py в вашем редакторе кода.
  2. Определите функцию triangle_decryption(), которая принимает строку text в качестве входных данных и возвращает расшифрованный текст в виде строки.
def triangle_decryption(text: str) -> str:
    ## Initialize an empty string to store the decrypted text
    decryption_text = ""

Обработка пустого или None ввода

В этом шаге вы научитесь обрабатывать ситуацию, когда входной text пустой или равен None.

  1. Добавьте if-условие для проверки, не является ли text пустым.
if text:
    ## Remove leading and trailing spaces from the text
    while text.startswith(" "):
        text = text[1:]
    while text.endswith(" "):
        text = text[:-1]

    ## Proceed with the decryption process
    #...
else:
    ## If the text is None, set the decrypted text to None
    decryption_text = None

Реализация логики расшифровки

В этом шаге вы научитесь реализовать логику для расшифровки треугольного шифра.

  1. Инициализируйте переменную i, чтобы отслеживать текущий индекс в строке text.
  2. Инициализируйте переменную step, чтобы отслеживать размер шага для каждой строки.
  3. Используйте цикл while, чтобы перебрать строку text и добавить последний символ каждой строки в строку decryption_text.
i = 0
step = 1
while i < len(text):
    ## Append the current character to the decrypted text
    decryption_text += text[i]
    i = i + 1 + step
    step += 1

## Append the last character to the decrypted text if it is not the last character of the text
if i - step + 1!= len(text):
    decryption_text += text[-1]

Возвращение расшифрованного текста

В этом финальном шаге вы научитесь возвращать расшифрованный текст.

  1. После процесса расшифровки верните строку decryption_text.
return decryption_text

Полная функция triangle_decryption() должна выглядеть так:

def triangle_decryption(text: str) -> str:
    ## Initialize an empty string to store the decrypted text
    decryption_text = ""

    if text:
        ## Remove leading and trailing spaces from the text
        while text.startswith(" "):
            text = text[1:]
        while text.endswith(" "):
            text = text[:-1]

        i = 0
        step = 1
        while i < len(text):
            ## Append the current character to the decrypted text
            decryption_text += text[i]
            i = i + 1 + step
            step += 1

        ## Append the last character to the decrypted text if it is not the last character of the text
        if i - step + 1!= len(text):
            decryption_text += text[-1]

    else:
        ## If the text is None, set the decrypted text to None
        decryption_text = None

    return decryption_text

if __name__ == "__main__":
    print(triangle_decryption("LcadcbsdxEsdxcx"))
    print(triangle_decryption("Lcadb"))
    print(triangle_decryption(" LcadcbsdxEsdxcx"))
    print(triangle_decryption("L ab"))
    print(triangle_decryption(None))

Тестирование скрипта

В этом шаге вы научитесь тестировать скрипт с помощью предоставленных примеров.

  1. Сохраните файл triangle.py.
  2. Запустите скрипт с помощью предоставленных примеров:
python3 /home/labex/project/triangle.py

Результат должен соответствовать ожидаемым результатам:

## LcadcbsdxEsdxcx
LabEx
## Lcadb
Lab
## LcadcbsdxEsdxcx
LabEx
## L ab
Lab
## None
None

Поздравляем! Вы завершили проект.

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

Резюме

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