[英]How to convert alphabet to numbers?
试图将字母转换为数字。 我正在尝试做的一个示例是将单词“green”转换为相应数字索引值的列表: [6, 17, 4, 4, 13]
我的最终目标是在密码加密器中使用它,我可以将字母转换为数字,对数字进行一些数学运算,使它们仍然在 [0, 25] 上,然后将这些数字转换回字母,所以它混在一起了。
这是我到目前为止所做的代码:
def lettertonumber(word):
flength = len(word)
fcodera = "abcdefghijklmnopqrstuvwxyz"
fcoderb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
fcoderlength = len(fcodera)
numkey = []
i = 0
g = 0
while i < flength: # flength is the length of 'word' (in the case of 'green', 5)
while g < fcoderlength: # fcoderlength is the length of the alphabet (26)
if word[i] == fcodera[g]: # to convert it to the number
numkey.append(fcoderb[g]) # fcoderb is a list with [0, 1, 2, 3... 24, 25] for the alphabet
g = g + 1
i = i + 1
return numkey
word = 'green'
numberkey = lettertonumber(word)
print(numberkey) 的输出是 [6]。 那么,我的问题是考虑我所拥有的循环,为什么我只在 numberkey[] 中得到一个值得数字的 i 循环的迭代,而我应该得到与单词长度一样多的值(这样 print( numberkey) 输出 [6, 17, 4, 4, 13])
抱歉,如果我的问题措辞不佳或没有帮助,这是我的第一个问题! 也为我对 Python 的无知感到抱歉——我昨天才学的! 谢谢!
您可以使用ord
函数获取十进制的 ascii 值,然后减去 97。这一切都可以在列表理解中完成。
>>> word = 'green'
>>> [ord(l.lower()) - 97 for l in word]
[6, 17, 4, 4, 13]
如果您想倒退,您可以获取数字列表并使用chr
函数将其转换回字母。 然后用一个空白字符串连接在一起。
>>> numbers = [6, 17, 4, 4, 13]
>>> ''.join([chr(n + 97) for n in numbers])
'green'
好吧,我还没有真正完全回答您的问题,但这是一个将数字转换为字母的简单函数:
def convert_to_alphabet(number_list):
alphabet = "abcdefghijklmnopqrstuvwxyz"
alphabet_list = []
for i in number_list:
alphabet_list.append(alphabet[i])
return alphabet_list
我对您的代码进行了更改。 这里是:
def letterToNumber(word):
numKey = []
tmp = 0
for i in word:
tmp = i.lower()
numKey.append(ord(tmp.lower()) - ord('a'))
return numKey
word = 'green'
numberKey = letterToNumber(word)
print(numberKey)
只是将变量名称重命名为更清晰,而不是在字母字符串中查找索引,我只是使用了内置的ord()
函数,该函数可以将字符转换为ASCII码值。 当我获得字符的 ASCII 码值时,我可以通过减去ord(character) and ord('a')
将其转换为字母表中的索引。
我认为这就是您要搜索的内容:
def lettertonumber(word):
alphabet = []
for i in range(97, 123):
e = chr(i)
alphabet.append(e)
list_of_indexes = []
for i in word:
e = alphabet.index(i)
list_of_indexes.append(e)
print(list_of_indexes)
lettertonumber("green")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.