Криптография: шифрование в python - PullRequest
2 голосов
/ 02 августа 2020

Формулировка задачи: Каждый алфавит в верхнем регистре сдвигается влево, например, если алфавит D был сдвинут влево на 3, он станет A, а E станет B, и так далее ..

I правильно получил первые два тестовых примера, но я застрял на третьем, у которого был знак фунта.

Моя пробная версия:

sh = int(input())
s = input()
n = ""
for char in s:
    val = ord(char)-sh
    if char != " ":
        if 65 <= val <= 90:
            n += chr(val)
        else:
            if val < 65:
                if '0' <= char <= '9':
                    n += char
                else:
                    n += chr(90 - (65 - val - 1))
    else:
        n += char
print(n)

Тестовый пример 1:

(in1)>> 3
(in2)>> H3LL0 W0RLD
(out)>> E3II0 T0OIA

Тестовый пример 2:

(in1)>> 6
(in2)>> THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
(out)>> NBY KOCWE VLIQH ZIR DOGJM IPYL NBY FUTS XIA

Тестовый пример 3:

(input_num_1)>> 2
(input_num_2)>> H4IGDFDNO£PJNHVDKHZPDOPG2
(ExpectedOut)>> F4GEBDBLM\-62\-93NHLFTBIFXNBMNE2
(My_output_.)>> F4GEBDBLMNHLFTBIFXNBMNE2

Ваша помощь и и мы очень ценим время, чтобы рассмотреть это. Спасибо.

Изменить: для большей ясности я добавил то, что мой код дает в качестве результата ожидаемого вывода, и, чтобы указать c, как / почему £ отображается на \-62\-93?

1 Ответ

2 голосов
/ 02 августа 2020

Невозможно победить хороший вопрос Caesar Cipher. Вы на правильном пути, но я бы использовал встроенные проверки персонажа, чтобы быстро решить, что с ним делать.

sh = int(input())
s = input()
n = ""
for char in s:
    val = ord(char)-sh
    if char.isupper() and char.isalpha():
        if 65 <= val <= 90:
            n += chr(val)
        else:
            n += chr(90 - (65 - val - 1))
    else:
        n += char
print(n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...