我如何解决python中凯撒密码的问题?

问题描述 投票:0回答:2
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)

此代码无法正常工作,我找不到原因。我需要帮助。

例如,“我很讨厌编码”给出了"M DWYGO DEX DGSHMRK"空格之后的所有单词中都有这个额外的D。 “ M D WYGO D EX D GSHMRK”谢谢。

python caesar-cipher
2个回答
0
投票

您需要使用elif

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

0
投票

问题出在您的状况检查中,

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]
© www.soinside.com 2019 - 2024. All rights reserved.