在 Python 中将字母转换为数字

新手上路,请多包涵

下面怎么能完成呢?

 characters = ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''t''u''v''w''x''y''z']
numbers = ['1''2''3''4''5''6''7''8''9''10''11''12''13''14''15''16''17''18''19''20''21''22''23''24']
text = raw_input(' Write text: ')

我试过很多方法来解决它,但无法解决问题。我想做exc。如果我输入“hello”,输出将以数字排列,就像字母表一样。示例 a = 1 < 在字母表中。

原文由 altin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 613
1 个回答

像这样的事情怎么样:

 print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]

秩序

列表理解

ASCII 字符代码

编辑

既然你让我解释,我会……尽管 [?] 已经在评论中解释得很好了。

让我们从一行开始。

 input = raw_input('Write Text: ')
input = input.lower()
output = []
for character in input:
    number = ord(character) - 96
    output.append(number)
print output

这做同样的事情,但更具可读性。在尝试理解我的第一个答案之前,请确保您可以理解这里发生的事情。这里的一切都是非常标准的、简单的 Python。需要注意的一件事是 ord 函数。 ord 代表序数,几乎每一种高级语言都会提供这种类型的功能。它为您提供了到任何字符的数字表示的映射。 ord 的反函数称为 chr。

 chr(ord('x')) == 'x' # for any character, not just x.

如果你自己测试,a 的序数是 97(我上面发布的第三个链接将显示完整的 ASCII 字符集。)每个小写字母都在 97-122(26 个字符)的范围内。所以,如果你只是减去96 从任何小写字母的序数开始,假设你取 ‘a’ == 1,你将得到它在字母表中的位置。所以,’b’ 的序数 == 98,’c’ == 99,等等。当你减去 96,’b’ == 2,’c’ == 3,等等。

我发布的初始解决方案的其余部分只是您可以学习的一些 Python 技巧,称为列表理解。但是,我不会像专注于学习用 任何 语言解决问题那样专注于此,其中 ord 是你的朋友。

原文由 sberry 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题