Python 如何为每个大写字母指定一个数值?
如何为每个大写字母指定一个数值,然后稍后通过字符串使用它,然后将值相加 例如 然后返回答案6(在本例中)。您可以使用以获取ascii码,然后减去64Python 如何为每个大写字母指定一个数值?,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)
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)
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