gpt4 book ai didi

python - 如何解决 Python 中凯撒代码的问题

转载 作者:行者123 更新时间:2023-12-05 00:09:47 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的凯撒密码函数,该函数必须破译输入中给定的字符串。

Clear text = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Encrypted= D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

这是我要解密的代码:

def deciph(s):
b='abcdefghijklmnopqrstuvwxyz'
a='defghijklmnopqrstuvwxyzabc'
for i in s:
for j in range(len(a)):
if i==a[j]:
s=s.replace(i,b[j])
return s

此代码几乎总是可以正常工作,例如:

deciph('vxq') --> 'sun'

deciph('ohwwhu') --> 'letter'

问题是这种情况下的问题:

deciph('sp')--> 'mm'  #should be 'pm'

deciph('ol')-->'ii' #should be 'li'

因此,当第一个字母被破译时,第二个字母被加密。

如何修改我的代码?错误在哪里?我知道在互联网上有很多其他方法可以做同样的练习,但现在我有兴趣了解我的代码的错误。

最佳答案

让我们使用您的deciph('sp') 示例。问题是当您执行 s=s.replace(i,b[j]) 时,您最初将 's' 的所有实例替换为 'p ',为您提供 s = 'pp',然后在第二遍中,将 'p' 的所有实例替换为 'm',给你 s = 'mm'。这可以通过持有一个新的初始变量 rv = '' 来纠正,然后对每个字母使用 rv+=b[j] 而不是改变 s。然后在最后,返回 rv

关于python - 如何解决 Python 中凯撒代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60039555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com