Skip to main content
 首页 » 编程设计

python之用数字自身替换每个字母

2025年05月04日12落叶无声

我想取一个单词的每个字母(a 是 1,b 是 2,等等),然后将它们全部加在一起以求出所有数字的总和。例如,“苹果”将是 50。我有以下代码:

conversions = { 
'a': 1, 
'b': 2, 
'c': 3, 
'd': 4, 
'e': 5, 
'f': 6, 
'g': 7, 
'h': 8, 
'i': 9, 
'j': 10, 
'k': 11, 
'l': 12, 
'm': 13, 
'n': 14, 
'o': 15, 
'p': 16, 
'q': 17, 
'r': 18, 
's': 19, 
't': 20, 
'u': 21, 
'v': 22, 
'w': 23, 
'x': 24, 
'y': 25, 
'z': 26 
} 
 
def conversion(word): 
    for letter in word: 
        word.replace(letter, str(conversions[letter])) 
    word = list(word) 
    for number in word: 
        number = int(number) 
    return sum(word) 

但是,这会返回以下错误:

invalid literal for int() with base 10 

我可能犯了一些愚蠢的错误,但我似乎无法弄清楚问题出在哪里。任何帮助将不胜感激。

请您参考如下方法:

字符串是不可变的。 word.replace() 返回修改后的字符串,它不会更新 word。无论如何,您都无法将字符串更改为数字列表。

您根本不需要使用replace,只需将转化次数相加即可。

def conversion(word): 
    return sum(conversions[letter] for letter in word)