Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为每个大写字母指定一个数值?_Python_String - Fatal编程技术网

Python 如何为每个大写字母指定一个数值?

Python 如何为每个大写字母指定一个数值?,python,string,Python,String,如何为每个大写字母指定一个数值,然后稍后通过字符串使用它,然后将值相加 例如 然后返回答案6(在本例中)。您可以使用以获取ascii码,然后减去64 def codevalue(char): return ord(char) - 64 定义变量后,您可以返回答案或打印答案 A=1 B=2 C=3 总计=A+B+C 打印(总计) return totalEnumerate可以为您进行编号: import string numerology_table = dict((ch,num+1)

如何为每个大写字母指定一个数值,然后稍后通过字符串使用它,然后将值相加

例如

然后返回答案6(在本例中)。

您可以使用以获取ascii码,然后减去64

def codevalue(char):
    return ord(char) - 64

定义变量后,您可以返回答案或打印答案 A=1 B=2 C=3 总计=A+B+C 打印(总计)
return total

Enumerate可以为您进行编号:

import string
numerology_table = dict((ch,num+1) 
                         for (num,ch) in enumerate(string.ascii_letters[:26].upper()))
或者更好的是,您可以让枚举从1开始,而不是默认的0:

numerology_table = dict((ch,num) 
                         for (num,ch) in enumerate(string.ascii_letters[:26].upper(),
                                                   start=1))

如果您正在使用Python3:

result = 0
mystring = 'ABC'
for char in mystring.encode('ascii'):
    result += char - 64

>>> result
6

高尔菲的回答肯定会激怒你的教授:

>>> s = 'ABC'
>>> sum(map(ord,s),-64*len(s))
6

最明智的答案当然是使用前面所示的
ord
。但是对于那些选择构建字典的人,我宁愿只使用字符串中的索引:

>>> import string
>>> mystring = 'ABC'
>>> sum(string.uppercase.index(c) + 1 for c in mystring)
6

杰出的这就完成了我想要的90%,剩下的我可以自己解决。谢谢。更好的是,减去ord('A')。我不明白为什么这样更好。这将给出错误的结果,但如果它很流行,我想就这样吧。减去ord('A'),然后再加上1。它的美妙之处在于它摆脱了神奇的数字64,这对于那些没有记住ASCII表的人来说是神秘的,但是ord('A')显然是你在做什么。
numerology_table = dict((ch,num) 
                         for (num,ch) in enumerate(string.ascii_letters[:26].upper(),
                                                   start=1))
result = 0
mystring = 'ABC'
for char in mystring.encode('ascii'):
    result += char - 64

>>> result
6
>>> s = 'ABC'
>>> sum(map(ord,s),-64*len(s))
6
>>> import string
>>> mystring = 'ABC'
>>> sum(string.uppercase.index(c) + 1 for c in mystring)
6