暗号化:Pythonでの暗号化

2020-08-02 python encryption cryptography

問題の説明:すべての大文字のアルファベットが左にシフトします。たとえば、アルファベットのDが3だけ左にシフトされた場合、Aになり、EがBになります。

最初の2つのテストケースは正しく取得しましたが、ポンド記号の付いた3番目のテストケースで行き詰まりました。

私の裁判:

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

あなたの助けとこれをレビューする時間は真剣に感謝されます。 ありがとうございました。


編集: より明確にするために、予想される出力の下でコードが出力として生成するものを追加しました。具体的には、どのように/なぜ£\-62\-93マッピングされるのですか?

Answers

良いシーザー暗号の質問に勝つことはできません。あなたは正しい軌道に乗っていますが、私はキャラクターの組み込みチェックを使用して、それをどうするかをすばやく決定します。

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)

Related