将整数分配给字母并添加这些整数

时间:2018-07-03 12:54:17

标签: python python-3.x

我试图将数字1-26分配给字母a-z并根据任何给定的字符串将这些数字相加而没有成功。例如:a = 1, b=2, c=3。因此,如果任何给定的字符串为"abc",则输出应为1+2+3=6

编程背景-新手,自学。 我只学习了python编程中的字符串,列表及其对应的方法。我还没有学习函数和类,所以请使您的答案尽可能简单。

到目前为止,我已经尝试过

Name = "abc" 
a,b,c = [1,2,3]
Sum_of_name = ""
For alphabet in abc:
         Sum_of_name = sum_of_name + alphabet
Print(sum_of_name)

打印出相同的abc。

我意识到,当我迭代字符串“ abc”时,该字符串不同于变量a,b和c。因此,整数不会分配给字符串,也无法加起来。

关于如何利用当前的知识水平解决此问题的任何建议。

4 个答案:

答案 0 :(得分:2)

这是一种方法。

演示:

from string import ascii_lowercase
d = {v: i for i,v in enumerate(ascii_lowercase, 1)}
Name = "abc" 
print( sum(d[i] for i in Name) )

输出:

6

答案 1 :(得分:1)

首先列出字母

>>> from string import ascii_lowercase as alphabet
>>> alphabet
'abcdefghijklmnopqrstuvwxyz'

然后查找按字母顺序排列的值(还有其他方法可以做到这一点)

>>> values = {letter: value for value, letter in enumerate(alphabet, 1)}
>>> values
{'d': 4, 'f': 6, 'o': 15, 'b': 2, 's': 19, 'c': 3, 'w': 23, 'q': 17, 'v': 22, 'p': 16, 'i': 9, 'e': 5, 'l': 12, 't': 20, 'y': 25, 'n': 14, 'a': 1, 'r': 18, 'j': 10, 'x': 24, 'g': 7, 'm': 13, 'k': 11, 'h': 8, 'z': 26, 'u': 21}

然后将其用于sum个值

def sum_letters(word):
    return sum(values[letter] for letter in word)

>>> sum_letters('abc')
6

答案 2 :(得分:0)

如果您有固定的订单,则可以使用ord()

a="Name"
s=0
for i in a.lower():
     s+=ord(i)-96
print(s)

答案 3 :(得分:0)

要获取字母中的字符,可以使用string lib:

>>> import string
>>> letters = string.lowercase
>>> letters
'abcdefghijklmnopqrstuvwxyz'

然后我们可以将其变成字典,以使获取字母的数字(位置)值变得容易:

letter_map = dict(zip(list(letters), range(1, len(letters) + 1)))

因此,您的函数将对每个字母输入执行简单的字典查找:

def string_sum(string_input):
    return sum(letter_map[char] for char in string_input)

几个测试用例:

>>> assert string_sum('abc') == 6
>>> assert string_sum('') == 0  # because it's empty