首页 > 解决方案 > 密码学:在 python 中加密

问题描述

问题陈述:每个大写字母都向左移动,例如,如果字母 D 向左移动 3,它将变为 A,E 将变为 B,依此类推。

我正确地得到了前两个测试用例,但我被困在第三个带有井号的测试用例上。

我的试用:

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

标签: pythonencryptioncryptography

解决方案


无法解决一个好的凯撒密码问题。你在正确的轨道上,但我会使用对角色的内置检查来快速决定如何处理它。

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)

推荐阅读