我想创建简单的“编码脚本”
我有这本字典:
diction = {
"A" : "Z",
"Y" : "B",
"C" : "X"
}
我想给出一些随机的句子,重复它的字母,如果在这本字典中找到字母-打印相反的字母
所以,如果我说
"ABC"
它应返回:
"ZYX"
我尝试了此代码,但出现了一个“KeyError”:
# Defining dictionary
diction = {
"A" : "Z",
"Y" : "B",
"C" : "X",
"W" : "E",
"E" : "V",
"U" : "F",
"G" : "T",
"S" : "H",
"I" : "R",
"Q" : "J",
"K" : "P",
"O" : "L",
"M" : "N",
" " : " "
}
# Sentence in "szyfr" variable should be split into list.
szyfr = "SOME SENTENCE WHATEVER"
def split(szyfr):
return [char for char in szyfr]
szyfr = split(szyfr)
# Now I want to iterate through "szyfr" and replace letters as in "CAT" example:
for i in szyfr:
if i in diction:
diction = {x:y for x,y in diction.items()}
print(i)
print("Variable: " + i + " is in 'key'")
pass
elif diction[i] in szyfr:
diction = {y:x for x,y in diction.items()}
print(i)
print("Variable: " + i + " is in 'value'")
elif i is " ":
pass
print(szyfr)
如果您确实想使用一个dict,其中每个键的“字母”都有“相反字母”的值:
这是一个可能的解决方案:
输出:
根据您提供的代码,我发现以下奇怪之处:
似乎您正在尝试从字符串构建列表,可以简单地如下所示:
因此,在您的具体案例中:
不过,实际上并不需要它,因为您可以直接管理字符串,就像它是一个列表一样,使用for
现在,您需要替换特定字典后面的字符。我发现您的解决方案太复杂,而您只需要:
如果您没有为所有可能的字符定义对应符,那么使用字典的get(k)方法是明智的,该方法在未找到键k时返回None
必须考虑到,get(k)方法在找不到键的情况下具有返回值的默认参数,因此您可以使用get(k,default_return_value),这让我们可以进一步简化代码:
现在我们使用列表理解,因为我们不再需要条件。调用
diction.get(ch, ch)
返回ch或相应的编码字符,如果在字典中找不到,则返回ch本身。通过调用str.join(),即"".join(...)
,我们将列表转换回字符串您缺少一些字母,例如
N
。请注意{"M": "N"}
与{"N": "M"}
不同也就是说,你甚至不需要字典,就好像你从155(65+65+26-1)中减去一个大写字母的ASCII code(例如a的65),你将得到相应字母的ASCII码:
相关问题 更多 >
编程相关推荐