gpt4 book ai didi

python - 使用字典解码句子

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:46 25 4
gpt4 key购买 nike

首先,我是 python 的新手,通常没有编程经验。

我的问题是我无法一次性转换整个句子。我尝试了一个 for 循环,但它只是以 a 和 b 中的一个完整句子结束。有什么有效的方法可以转换每个字母而无需创建一个显示句子的全新列表?

我尝试了 for 循环并使用 : 来显示列表中的所有值,但是 for 循环继续转换已经转换的字母和 : 提示我不能使用整个列表作为字典的键。

sentence = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
#sentence before conversion
letters = ['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']
new_letters = {}
#dictionary that makes all conversions (basically go 2 letters down the alphabet, a=c, b=d)
for i in range(0, 24):
new_letters.update({(letters[i]): (letters[i+2])})
i+=1
#creates dictionary
new_letters.update({'y':'a', 'z':'b'})
#had to add in y and z because I cannot go 2 letters down from y or z
new_sentence = sentence.replace(letters[], new_letters[letters[]])
#trying to replace certain letters with other letters, using the new_letters dictionary
print(new_letters)
print(new_sentence)

是的,这是来自 http://www.pythonchallenge.com/index.php :D

最佳答案

所以,基本上你想用字母表中向后旋转两个位置的等效字符替换字符串中的每个字符(所以 'a' 变成 'c''b' 变为 'd' 等等)。

有几种方法可以做到这一点。正如您所注意到的,您不能使用简单的 for 循环,因为您将转换已经转换过一次的字符。幸运的是,Python 字符串有一个 translate 方法,它接受一个将字符相互映射的 dict。因此,您可以这样做:

from string import ascii_lowercase, ascii_uppercase

rotated_lowercase = ascii_lowercase[2:] + ascii_lowercase[:2]
rotated_uppercase = ascii_uppercase[2:] + ascii_uppercase[:2]

translation_table = str.maketrans(ascii_lowercase + ascii_uppercase, rotated_lowercase + rotated_uppercase)

print('This is a translated string.'.translate(translation_table))

输出:

Vjku ku c vtcpuncvgf uvtkpi.

ascii_lowercasestring 模块中的一个属性,它包含整个小写字母表,因此您不必手动输入它。

rotated_alphabet 从字母表的第三个字符开始,并将前两个字符添加到末尾,因此您得到 'cde...zab'

然后我们可以用maketrans把两者放在一起,这样a映射到cb映射到d 等等,就像我们想要的那样。

最后,对我们要转换的任何字符串调用translate 方法就足够了,传入翻译表(注意句点未被触及)。

关于python - 使用字典解码句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822817/

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