Python:如何给字母赋值?
我想给字母表中的每个字母分配一个值,比如 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)}