2012-12-09 66 views
2

所以我想要做的是創建一個代碼,在名稱中添加字母的值,例如名稱:ABCD ---> 1 + 2 + 3 + 4 = 10在Python中的循環添加項目

到目前爲止我的代碼是:

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=" ")

回答

3

所有的值你可以這樣做:

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

相關文檔

+1

您可能還想要解釋[生成器表達式](http://www.youtube.com/watch?v=pShL9DCSIUw)。 –

1
In [19]: sum(ord(c) - ord('A') + 1 for c in 'ABCD') 
Out[19]: 10 
2

如果你實際上並不需要打印出每個人物的價值就像您目前正在使用sum像其他人所說。

但是,如果你想保持循環體,其打印出的每個字符的值,以及總結所有這些,只需要創建一個變量外循環和ord(c)-96增加它每次:

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

一旦for循環完成,total將保存每個字符的所有值的總和。

+0

謝謝,這真的有幫助! – amarz121

1

一種方法是建立煤焦>值的映射,您可以使用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 

這樣可以節省擺弄序數值,更明確一點...