我正在尝试在python中执行#22问题而我的回答是关闭的。我已经浏览了列表并尝试了某些名称并且它们已被正确计算(我认为)。
任何人都可以帮忙吗?
使用names.txt(右键单击并将“保存链接/目标为...”),一个46K文本 包含超过五千个名字的文件,首先对其进行排序 按字母顺序排列。然后计算出字母值 每个名称,将该值乘以其中的字母位置 列表以获得名称分数。
例如,当列表按字母顺序排序时,COLIN, 值得3 + 15 + 12 + 9 + 14 = 53,是第938名 名单。因此,COLIN将获得938×53 = 49714的分数。
文件中所有名称分数的总和是多少?
def letter_sum(word):
total = 0
for letter in word:
total += ord(letter) - ord('A') + 1
return total
def namescore(name, count):
name_sum = letter_sum(name)
return count * name_sum
def main():
names = []
f = open('p022_names.txt', 'r')
string = f.read()
f.close()
total = 0
names = sorted(string.replace('"', '').split(','))
for i in range(len(names)):
total += namescore(names[i], i)
print total
答案 0 :(得分:2)
您的索引关闭了一个。基于'COLIN'
索引的937
位于索引0
,但该分配使用基于1
的索引。您可以通过更改代码来解决问题:
total += namescore(names[i], i + 1)
答案 1 :(得分:1)
这是一个错误。在代码中:
for i in range(len(names)):
total += namescore(names[i], i)
i
从0
开始,而名称应从1
开始计算,改为使用namescore(names[i], i + 1)
。