繁体   English   中英

如何将字母转换为数字?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM