gpt4 book ai didi

python - 不使用 ord、chr 和循环的凯撒密码

转载 作者:行者123 更新时间:2023-12-01 07:46:50 24 4
gpt4 key购买 nike

我在试图解决这个问题时碰壁了,但我不知道如何解决这个问题。

我的想法是比较每个字符串的两个第一个字符,如果它们相同,则将该字符保存在索引位置移位的字母字符串中。 通过删除 secret 的第一个字符来递归字符串的其余部分。如果第一个字符不同,则递归但删除字母字符串的第一个字符。

不过我不确定如何递归字母表的其余部分。

alphabet = "abcdefghijklmnopqrstuvwxyz"

def caesar_encrypt(secret, shift):
if len(secret) == 0:
return ""
elif shift == 0:
return secret
else:
if secret[0] == alphabet[0]:
return alphabet[shift] + caesar_encrypt(secret[1:],shift)
else:
return caesar_encrypt(secret,shift), alphabet[1:]

最佳答案

我建议使用str.index查找字符串中每个字符在字母表中的位置索引。之后,用它来索引字母表并递归。

您应该注意的一些问题:

  1. 如果字符串包含空格,则将该空格按原样放置在字符串中,然后移至下一个字符

  2. 您需要处理回绕,如果我们位于字母表的末尾并且您选择的类次将超出字母表的末尾,则您需要回绕并转到字母表的开头。

这应该有效:

alphabet = "abcdefghijklmnopqrstuvwxyz"

def caesar_encrypt(secret, shift):
if len(secret) == 0:
return ""
elif shift == 0:
return secret
elif secret[0] == ' ': # New - handle spaces
return ' ' + caesar_encrypt(secret[1:], shift)
else:
index = (alphabet.index(secret[0]) + shift) % len(alphabet) # Find the right place to access the alphabet
return alphabet[index] + caesar_encrypt(secret[1:], shift) # Use this new character then recurse

注意:此实现仅处理小写字母。

关于python - 不使用 ord、chr 和循环的凯撒密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420396/

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