我想取一个单词的每个字母(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)
关于python - 用数字自身替换每个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436404/