2

所以我要做的是制作一个代码,在名称中添加字母的值,例如名称:ABCD ---> 1 + 2+ 3+ 4= 10

到目前为止,我的代码是:

def main():
    name = input("Please enter your name (all lowercase): ")
    print("\nHere is the code: ")
    for ch in name:
        print(ord(ch)-96,end=" ")

我想要做的是添加所有的值(ord(ch)-96,end=" ")

4

4 回答 4

3

你可以这样做:

sum(ord(c) - 96 for c in name)

相关文件

于 2012-12-09T17:44:09.340 回答
2

如果您实际上不需要像现在这样打印出每个字符的值,请sum像其他人建议的那样使用。

但是,如果您想保留打印出每个字符的值并将它们全部相加的循环体,只需在循环外创建一个变量并ord(c)-96每次递增:

total = 0
for ch in name:
    charValue = ord(ch)-96
    print(charValue, end="")
    total += charValue

一旦 for 循环完成,total将保存每个字符的所有值的总和。

于 2012-12-09T17:49:35.357 回答
1
In [19]: sum(ord(c) - ord('A') + 1 for c in 'ABCD')
Out[19]: 10
于 2012-12-09T17:44:11.087 回答
1

一种方法是创建 char->value 的映射,您可以使用dict:

>>> from string import ascii_lowercase
>>> lookup = {ch:idx for idx, ch in enumerate(ascii_lowercase, start=1)}
>>> test = 'abcd'
>>> sum(lookup[ch] for ch in test)
10

这节省了序数值的麻烦,并且更明确......

于 2012-12-09T18:27:43.040 回答