2010-09-14 5 views

ответ

6

Вы можете использовать ord, чтобы получить код ASCII, затем вычесть 64.

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

Отлично! Это составляет 90% того, что я хочу, и я могу разобраться в остальном самостоятельно. Благодарю. – moreisee

+4

Еще лучше, вычтите ord ('A'). – DonaldRay

+2

Я не понимаю, почему это лучше. Это даст неправильный результат, но если он будет популярен, так и предполагаю. – recursive

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 
2
def getvalue(mystring): 
    letterdict = dict(zip('ABCDEFGHIJKLMNOPQRSTUVWXYZ',range(1,27))) 
    return sum(letterdict[c] for c in mystring) 
11
base = ord('A') - 1 
mystring = 'ABC' 
print sum(ord(char) - base for char in mystring) 
0

После определения переменных, которые вы можете просто вернуть ответ или распечатать ответ A = 1 B = 2 C = 3 всего = A + B + C печать (всего) возвращение общая

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)) 
1

Если вы используя python3:

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

>>> result 
6 
1

Golfy ответить наверняка раздражать профессора:

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

Самый разумный ответ, конечно, используется ord, как показано ранее. Но для тех, кто решил построить словарь, я предпочел бы просто использовать индекс в строке:

>>> import string 
>>> mystring = 'ABC' 
>>> sum(string.uppercase.index(c) + 1 for c in mystring) 
6 
Смежные вопросы