如何将 Python 中的任何单词转换为整数

How to convert any word into an integer in Python

在python.

中,有没有一种方法可以将任何显然是字符串形式的单词转换为整数

乍一看这似乎完全愚蠢和不可能,但如果你看一下它,这是一个我一直在努力解决的好问题。

是的,我尝试过许多其他方法,例如使用列表将不同的整数存储到它们对应的字母;然而;不太顺利。

您可以使用内置的 hash 函数:

>>> hash('hello')
-8733837932593682240

您可以创建素数 (2,3,5,7,...) 与字母表中所有字符 (a,b,c,d,e,...) 之间的映射。然后将字符在单词中的位置映射到下一个更大的素数。

然后你将你的角色值乘以你的位置值并求和:

示例:

alphabet = {"a":2, "b":3, "1":5, "2":7 }
position = [11,13,17,19,23,29,31]
text = "aabb12a"

def encode(t):
    """Throws error when not map-able"""
    return sum(alphabet[x] * position[pos] for pos,x in enumerate(t))


for i in alphabet:
    print(i,"=>",encode(i))

print(encode(text))

输出:

('a', '=>', 22)
('1', '=>', 55)
('2', '=>', 77)
('b', '=>', 33)
536 

要反转数字,您必须进行质因数分解,按较大的数字升序排列结果被加数,然后反转字母表的映射。

在这种情况下你会得到:

536 = 2*11 + 2*13 + 3*17 + 3*19 + 5*23+ 7*29 + 2*31

你可以通过查找位置和字符来重构你的单词。

给出,128 个字符 (ascii) 和最多 50 个字符的单词,你会得到 个数字....