如何在python中解决caesar密码的问题? wheel=“abcdefghijklmnopqrstuvxyz” wlen=透镜(车轮)-1 c=输入(“键入一个单词:”)。上限() key=int(输入(“key:”) 加密=“” 对于c中的x: f=车轮。查找(x)+键 如果x==“”: 加密=加密+“” 如果f>wlen: f1=f-wlen-1 加密=加密+控制盘[f1] 如果fwlen: f1=f-wlen-1 加密=加密+控制盘[f1] elif

如何在python中解决caesar密码的问题? wheel=“abcdefghijklmnopqrstuvxyz” wlen=透镜(车轮)-1 c=输入(“键入一个单词:”)。上限() key=int(输入(“key:”) 加密=“” 对于c中的x: f=车轮。查找(x)+键 如果x==“”: 加密=加密+“” 如果f>wlen: f1=f-wlen-1 加密=加密+控制盘[f1] 如果fwlen: f1=f-wlen-1 加密=加密+控制盘[f1] elif,python,caesar-cipher,Python,Caesar Cipher,此代码不起作用,我找不到原因。我需要帮助 例如,“我在编码方面很差劲”给出了“M DWYGO DEX DGSHMRK” 在空格后面的所有单词中都有这个额外的D。“MDWYGODEXDGSHMRK” 谢谢。您需要使用elif wheel = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" wlen = len(wheel) - 1 c = input("Type a word: ").upper() key = int(input("Key: ")) encrypted = ''

此代码不起作用,我找不到原因。我需要帮助

例如,“我在编码方面很差劲”给出了
“M DWYGO DEX DGSHMRK”
在空格后面的所有单词中都有这个额外的D。“MDWYGODEXDGSHMRK”
谢谢。

您需要使用
elif

wheel = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
wlen = len(wheel) - 1

c = input("Type a word: ").upper()
key = int(input("Key: "))

encrypted = ''


for x in c:
    f = wheel.find(x) + key 
    if x == " ":
        encrypted = encrypted + " "
    if f > wlen:
        f1 = f - wlen - 1
        encrypted = encrypted + wheel[f1] 
    if f < wlen:
        encrypted = encrypted + wheel[f]

print(encrypted)
如果x==“”:
加密=加密+“”
elif>wlen:
f1=f-wlen-1
加密=加密+控制盘[f1]
elif
原因:


当您有一个空格时,
find
返回-1,因此添加您得到的键
3
,这样您就可以在第一个
if
中输入,因为它是一个空格,但在最后一个if as
3中也是如此。问题在于您的条件检查,因为多个条件同时计算为
True
,这是不需要的

if x == " ":
    encrypted = encrypted + " "
elif f > wlen:
    f1 = f - wlen - 1
    encrypted = encrypted + wheel[f1]
elif f < wlen:
    encrypted = encrypted + wheel[f]

查看您的
if
s。当第一个为真时,第二个也会运行吗?第三个呢?这就是你想要的吗?
for x in c:
    f = wheel.find(x) + key 
    if x == " ":
        encrypted = encrypted + " "
    elif f > wlen:
        f1 = f - wlen - 1
        encrypted = encrypted + wheel[f1] 
    else:
        encrypted = encrypted + wheel[f]