如何在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 as3中也是如此。问题在于您的条件检查,因为多个条件同时计算为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]