私はプロジェクトオイラーにProblem 22を解決しようとしています:#22プロジェクトオイラー:なぜ私の答えは間違っていますか?
を
names.txt
(右クリックし、「保存リンク/対象として...」)、五千人以上の最初の名前を含む46Kテキスト ファイルを使用して、開始 をアルファベット順にソートします。次に、 の各アルファベットの値を計算し、この値に リストのアルファベット順の位置を掛けて、名前スコアを取得します。たとえば、リストがアルファベット順にソートされている場合、COLINは3 + 15 + 12 + 9 + 14 = 53の価値があり、 リストの938番目の名前です。したがって、COLINは938×53 = 49714というスコアを取得します。
ファイル内のすべての名前スコアの合計はいくらですか?
import os chart=open('names.txt') doc=chart.read() doc=doc.split(',') doc.sort() z=0 def nameNum(name): r=0 for letter in name: r=r+ord(letter) - 64 return r for string in doc: z+=(doc.index(string)+1)*nameNum(string) print z
私は、zを作るしようとしていた:
names.txt
の
内容は、私は私がこのコードを使用するときに正しくない答えを得る理由は理解していない
"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA",....[46k omitted]
です答えは出ますが、それは正しくなく、私は理由を理解できません。
これはpython 3です。
デバッグのヘルプを求める質問(** "なぜこのコードは動作しませんか?" **)は必要な動作、*特定の問題またはエラー*、* *を再現するのに必要な最短コード**を含む必要があります。質問自体**。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能な例を作成する方法](http://stackoverflow.com/help/mcve) – MattDMo
また、これはPython 2では使えない 'print z'を使っているので、これはPython 3にはできません。 –
私が投稿できない答えでは、' allsum'のようなテスト可能な関数を記述し、あなたが答えを計算することができる '' "" ''と' '" A "、" 'で始まります。 'allsum( ''" "CD"、 "A"、 "AB" '' ') 'のようなものの後にのみ、' allsum(open(' names.txt ')。read()) 'を試してください。 –