如何将 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 个字符的单词,你会得到 大 个数字....
在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 个字符的单词,你会得到 大 个数字....