Python:如何给字母赋值?

6 投票
10 回答
66463 浏览
提问于 2025-04-16 01:17

我想给字母表中的每个字母分配一个值,比如 a 对应 1,b 对应 2,c 对应 3,一直到 z 对应 26。就像一个函数,可以返回字母的值,比如:

value('a') = 1

value('b') = 2

等等……

我该怎么在 Python 里实现这个呢?

10 个回答

3

在编程中,有时候我们会遇到一些问题,可能会让我们感到困惑。比如,有些代码在运行的时候可能会出现错误,或者我们想要实现某个功能却不知道该怎么做。这种时候,我们可以去一些技术论坛,比如StackOverflow,去寻求帮助。在这些论坛上,很多人会分享他们的经验和解决方案,帮助我们更好地理解问题。

有时候,问题的描述可能会涉及一些技术细节,但其实只要理解了基本的概念,就能找到解决办法。比如,了解什么是变量、函数、循环等基本概念,就能帮助我们更好地理解代码是如何工作的。

总之,遇到问题时,不要害怕去寻求帮助,很多人都愿意分享他们的知识和经验,这样我们就能更快地学习和进步。

def value(letter):
    return ord(letter) - ord('a') + 1
7

如果你只是想把ASCII字母转换成数字,可以使用 ord() 函数,然后对结果进行调整:

>>> ord('a') - 96
1

如果你想让这个方法也适用于大写字母:

>>> ord('A'.lower()) - 96
1

另外,你可能还想确认一下输入的确实是一个单独的ASCII字符:

>>> char = 'a'
>>> len(char) == 1 and char.isalpha() and 'a' <= char <= 'z'
True

或者:

>>> import string
>>> len(char) == 1 and char in string.ascii_lowercase
True
11

你想要一个原生的 Python 字典。

(而且你可能还希望你的值从“0”开始,而不是从“1”开始,这样你就可以避免在所有映射上加1,像下面这样)

可以用这个来构建:

import string
values = dict()
for index, letter in enumerate(string.ascii_lowercase):
   values[letter] = index + 1

这样你就能得到类似这样的东西:

print values["a"]
-> 1

当然,你也可以使用内置的“ord”函数,完全不需要这个字典,就像其他答案中提到的那样:

print ord("c") - (ord("a")) + 1

或者在 Python 3.x 或 2.7 中,你可以用字典生成表达式一次性创建字典:

values = {chr(i): i + 1 for i in range(ord("a"), ord("a") + 26)}

撰写回答