Python - 从字符串中读取 table 中的两个字母
Python - Read two letters in table from string
我正在做一个 ADFGVX 密码编码器和解码器,我有一个 polybius 方块,我需要在其中读取两个字母。
reversesquare = {'AA': '1', 'AD': '2', 'AF': '3', 'AG': '4', 'AV': '5', 'AX': '6',
'DA': '7', 'DD': '8', 'DF': '9', 'DG': '0', 'DV': 'Q', 'DX': 'W',
'FA': 'E', 'FD': 'R', 'FF': 'T', 'FG': 'Y', 'FV': 'U', 'FX': 'I',
'GA': 'O', 'GD': 'P', 'GF': 'A', 'GG': 'S', 'GV': 'D', 'GX': 'F',
'VA': 'G', 'VD': 'H', 'VF': 'J', 'VG': 'K', 'VV': 'L', 'VX': 'Z',
'XA': 'X', 'XD': 'C', 'XF': 'V', 'XG': 'B', 'XV': 'N', 'XX': 'M'}
def Decrypt_Final(sortedcipher):
mensagemcifrada = ""
for letter in sortedcipher: # Esta a ler letra a letra quando devia ser 2 de uma vez
if letter in reversesquare:
mensagemcifrada += (reversesquare[letter])
return mensagemcifrada
我有这个函数,它将接受一个字符串(sortedcipher),例如:GXFXVVFXGDFA
我希望我的程序每次循环读取两个字母,例如“GX”“FX”....并在匹配时在我的 reversesquare
中找到。
您可以使用这样的偏移量压缩字符串:
for a, b in zip(sortedcipher, sortedcipher[1:]):
pair = a + b
# pair now contains "GF", "FX" and so on..
另一种选择是使用列表理解:
def Decrypt_Final(sortedcipher):
# turns the cipher into a list of strings where each element
# contains two characters from the string
letters = (sortedcipher[i:i+2] for i in range(0, len(sortedcipher), 2))
return [reversesquare[letter] for letter in letters]
下面是一个“单行”,虽然可读性较差。
def Decrypt_Final(sortedcipher):
return "".join([
reversesquare[sortedcipher[i:i+2]]
for i in range(0, len(sortedcipher), 2)
]
)
我正在做一个 ADFGVX 密码编码器和解码器,我有一个 polybius 方块,我需要在其中读取两个字母。
reversesquare = {'AA': '1', 'AD': '2', 'AF': '3', 'AG': '4', 'AV': '5', 'AX': '6',
'DA': '7', 'DD': '8', 'DF': '9', 'DG': '0', 'DV': 'Q', 'DX': 'W',
'FA': 'E', 'FD': 'R', 'FF': 'T', 'FG': 'Y', 'FV': 'U', 'FX': 'I',
'GA': 'O', 'GD': 'P', 'GF': 'A', 'GG': 'S', 'GV': 'D', 'GX': 'F',
'VA': 'G', 'VD': 'H', 'VF': 'J', 'VG': 'K', 'VV': 'L', 'VX': 'Z',
'XA': 'X', 'XD': 'C', 'XF': 'V', 'XG': 'B', 'XV': 'N', 'XX': 'M'}
def Decrypt_Final(sortedcipher):
mensagemcifrada = ""
for letter in sortedcipher: # Esta a ler letra a letra quando devia ser 2 de uma vez
if letter in reversesquare:
mensagemcifrada += (reversesquare[letter])
return mensagemcifrada
我有这个函数,它将接受一个字符串(sortedcipher),例如:GXFXVVFXGDFA
我希望我的程序每次循环读取两个字母,例如“GX”“FX”....并在匹配时在我的 reversesquare
中找到。
您可以使用这样的偏移量压缩字符串:
for a, b in zip(sortedcipher, sortedcipher[1:]):
pair = a + b
# pair now contains "GF", "FX" and so on..
另一种选择是使用列表理解:
def Decrypt_Final(sortedcipher):
# turns the cipher into a list of strings where each element
# contains two characters from the string
letters = (sortedcipher[i:i+2] for i in range(0, len(sortedcipher), 2))
return [reversesquare[letter] for letter in letters]
下面是一个“单行”,虽然可读性较差。
def Decrypt_Final(sortedcipher):
return "".join([
reversesquare[sortedcipher[i:i+2]]
for i in range(0, len(sortedcipher), 2)
]
)