如何为每个大写字母指定一个数值,然后通过字符串使用它,然后将值相加。
EG。
A = 1, B = 2, C = 3 (etc..)
string = 'ABC'
然后返回答案6(在这种情况下)。
答案 0 :(得分:11)
base = ord('A') - 1
mystring = 'ABC'
print sum(ord(char) - base for char in mystring)
答案 1 :(得分:6)
您可以使用ord
获取ascii代码,然后减去64。
def codevalue(char):
return ord(char) - 64
答案 2 :(得分:4)
import string
letter_to_numeral = dict(zip(string.uppercase, range(1, len(string.uppercase) + 1) ))
print letter_to_numeral
>>> {'A': 1, 'C': 3, 'B': 2, 'E': 5, 'D': 4, 'G': 7, 'F': 6, 'I': 9, 'H': 8, 'K': 11, 'J': 10, 'M': 13, 'L': 12, 'O': 15, 'N': 14, 'Q': 17, 'P': 16, 'S': 19, 'R': 18, 'U': 21, 'T': 20, 'W': 23, 'V': 22, 'Y': 25, 'X': 24, 'Z': 26}
def score_string(s):
return sum([letter_to_numeral[character] for character in s])
score_string('ABC')
>>> 6
答案 3 :(得分:3)
枚举可以为您编号:
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))
答案 4 :(得分:2)
def getvalue(mystring):
letterdict = dict(zip('ABCDEFGHIJKLMNOPQRSTUVWXYZ',range(1,27)))
return sum(letterdict[c] for c in mystring)
答案 5 :(得分:1)
如果您使用的是Python3:
result = 0
mystring = 'ABC'
for char in mystring.encode('ascii'):
result += char - 64
>>> result
6
答案 6 :(得分:1)
>>> s = 'ABC'
>>> sum(map(ord,s),-64*len(s))
6
答案 7 :(得分:1)
最明智的答案当然是使用ord
,如前所示。但对于那些选择构建字典的人,我宁愿只使用字符串中的索引:
>>> import string
>>> mystring = 'ABC'
>>> sum(string.uppercase.index(c) + 1 for c in mystring)
6
答案 8 :(得分:0)
定义变量后,您只需返回答案或打印答案即可 A = 1 B = 2 C = 3 总= A + B + C. 打印(总计) 返回总数