我已经制作了一种秘密语言,我可以将完整的单词放入输入并获得输出,因为列表中的字母应该是。比方说我输入“AB”我希望输出为“QW”。
while True:
print("type sentence you want translated")
Befor=input()
After=list(Befor)
if Befor=="A":
print("Q")
elif Befor=="B":
print("W")
elif Befor=="C":
print("E")
elif Befor=="D":
print("R")
else:
print("--")
print(After)
pass
答案 0 :(得分:1)
您输入了两个字母,但您的测试条件每个只包含一个字符。您应该使用for
迭代输入字符串,并逐个测试字符串中的每个字符:
before = input()
for i in before:
if i=="A":
print("Q")
elif i=="B":
print("W")
elif i=="C":
print("E")
elif i=="D":
print("R")
else:
print("--")
您还可以使用映射代替if/elif
来改进代码,因为这可以帮助您更轻松地容纳新翻译:
before = input()
mapping = {'A': 'Q', 'B': 'W', 'C': 'E', 'D': 'R'}
after = ''
for i in before:
after += mapping.get(i, '--')
print(after)
注意当映射不包含字符时,字典的get
方法如何用于返回默认值'--'
。
答案 1 :(得分:1)
您也可以自动填充,
before = input()
mapping = {chr(x):(chr(x+6) if x + 6 < 91 else chr(x+6-26)) for x in range(65,91)}
print(mapping)
after = ''.join(mapping.get(x, '--') for x in before)
print(after)
SUBHAM
{'A': 'G', 'B': 'H', 'C': 'I', 'D': 'J', 'E': 'K', 'F': 'L', 'G': 'M', 'H': 'N', 'I': 'O', 'J': 'P', 'K': 'Q', 'L': 'R', 'M': 'S', 'N': 'T', 'O': 'U', 'P': 'V', 'Q': 'W', 'R': 'X', 'S': 'Y', 'T': 'Z', 'U': 'A', 'V': 'B', 'W': 'C', 'X': 'D', 'Y': 'E', 'Z': 'F'}
YAHNGS
[Program finished]
大概是环绕?这有点像塞塞尔密码?可以重用python中已有的很多东西
def genCipher(offset):
from collections import deque
from string import ascii_uppercase
c = deque(ascii_uppercase)
c.rotate(-offset)
return dict(zip(ascii_uppercase, c))
print(genCipher(6))
{A': 'G', 'B': 'H', 'C': 'I', 'D': 'J', 'E': 'K', 'F': 'L', 'G': 'M', 'H': 'N', 'I': 'O', 'J': 'P', 'K': 'Q', 'L': 'R', 'M': 'S', 'N': 'T', 'O': 'U', 'P': 'V', 'Q': 'W', 'R': 'X', 'S': 'Y', 'T': 'Z', 'U': 'A', 'V': 'B', 'W': 'C', 'X': 'D', 'Y': 'E', 'Z': 'F'}
答案 2 :(得分:0)
您正在重新发明轮子,请使用str.translate
。要使用str.translate
,您需要先创建一个可用于将原始字符映射到新字符的字典。可以使用maketrans
创建此转换表。
>>> mapping = {'A': 'Q', 'B': 'W', 'C': 'E', 'D': 'R'}
>>> str.maketrans(mapping)
{65: 'Q', 66: 'W', 67: 'E', 68: 'R'}
现在我们已准备好表格,我们只需要将其传递给translate
。
>>> table = str.maketrans(mapping)
>>> "AB".translate(table)
'QW'
现在我们得到了理想的结果。