-1

我最近刚刚通过在线课程开始使用 python 进行编程,并且在其中一项作业中,我们需要使用 rot13 对字符串进行编码。我使用了 maketrans 方法,一切都很好,但我很好奇如何将字母“编码”为数字。例如,我可以将字母表中每个字母的值分配给一个数字吗?AZ = 1-26 ? 我不知道如何使用两位数。请帮忙。谢谢你。

4

2 回答 2

1

使用ord()andchr()函数将字符转换为数字,反之亦然。字母和数字的数字对应于 ASCII 标准。

>>> ord('A')
65
>>> chr(65)
'A'

要将其转换为 1 到 26 之间的数字,请减去 64,或使用ord('@')(也为 64)。

另一种选择是使用string.ascii_uppercase变量,它可以让您找到字母的“索引”,从 0 开始:

>>> string.ascii_uppercase.index('B')
1
>>> string.ascii_uppercase.index('C')
2
>>> string.ascii_uppercase[3]
'D'

您可以使用任何一种技术来创建从字母到数字的映射,也许:

>>> letters = {c: i for i, c in enumerate(string.ascii_uppercase)}
>>> letters['M']
12
于 2013-03-06T18:39:28.483 回答
0

例如,我可以将字母表中每个字母的值分配给一个数字吗?AZ = 1-26 ?

编码:

>>> ''.join('%02d' % (ord(c) - ord('A') + 1) for c in 'SECRET')
'190503180520'

解码:

>>> encoded = '190503180520'
>>> ''.join(chr(int(encoded[i:i+2]) + ord('A') - 1) for i in range(0, len(encoded), 2))
'SECRET'
于 2013-03-06T18:40:39.310 回答