是否有可能将任何单词转换为python中的整数形式的任何单词。
乍一看这似乎完全是愚蠢的,是不可能的,但是如果您看一看,这是一个很好的问题,因为我已经苦苦挣扎了很长时间。
是的,我尝试了许多其他方式,例如使用列表将不同的整数存储到其对应的字母。进行得不太顺利。
答案 0 :(得分:1)
您可以在素数(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个字符的单词,您将获得 big 数字。...
答案 1 :(得分:-1)
您可以使用内置的hash
函数:
>>> hash('hello')
-8733837932593682240