<p>我试图用python做问题22,但我的答案是关闭的。我浏览了一下名单,试过了一些名字,而且计算得很正确(我想)。在</p>
<p>有人能帮忙吗??在</p>
<h2>问题:</h2>
<blockquote>
<p>Using names.txt (right click and 'Save Link/Target As...'), a 46K text
file containing over five-thousand first names, begin by sorting it
into alphabetical order. Then working out the alphabetical value for
each name, multiply this value by its alphabetical position in the
list to obtain a name score.</p>
<p>For example, when the list is sorted into alphabetical order, COLIN,
which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the
list. So, COLIN would obtain a score of 938 × 53 = 49714.</p>
</blockquote>
<p>档案里所有的名字分数总和是多少?在</p>
<pre><code>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
</code></pre>
<p>只差一个错误。在准则中:</p>
<pre><code>for i in range(len(names)):
total += namescore(names[i], i)
</code></pre>
<p><code>i</code>从<code>0</code>开始,而名称应该从<code>1</code>开始计数,请改用<code>namescore(names[i], i + 1)</code>。在</p>