The original questionを取得保管:#22プロジェクトオイラー - 私が間違った答えに
names.txt(右クリックして '保存リンク/対象として...')、五の上に含む46Kテキスト ファイルを使用して最初の名前は、 をアルファベット順にソートすることから始まります。次に、 の各アルファベットの値を計算し、この値に リストのアルファベット順の位置を掛けて、名前スコアを取得します。
たとえば、リストがアルファベット順にソートされている場合、COLINは3 + 15 + 12 + 9 + 14 = 53の価値があり、 リストの938番目の名前です。したがって、COLINは938×53 = 49714というスコアを取得します。
ファイル内のすべての名前スコアの合計はいくらですか?
fr = open('name.txt', 'r')
line = fr.read()
nametolist = line.split(',')
def namescores(nametolist):
sum=0
total=0
for i in range(len(nametolist)):
nametolist[i] = nametolist[i][1:-1]
print(nametolist)
for i in range(len(nametolist)):
for j in range(len(nametolist[i])):
if nametolist[i][j] == 'A':
sum+=1
elif nametolist[i][j] == 'B':
sum+=2
elif nametolist[i][j] == 'C':
sum+=3
elif nametolist[i][j] == 'D':
sum+=4
elif nametolist[i][j] == 'E':
sum+=5
elif nametolist[i][j] == 'F':
sum+=6
elif nametolist[i][j] == 'G':
sum+=7
elif nametolist[i][j] == 'H':
sum+=8
elif nametolist[i][j] == 'I':
sum+=9
elif nametolist[i][j] == 'J':
sum+=10
elif nametolist[i][j] == 'K':
sum+=11
elif nametolist[i][j] == 'L':
sum+=12
elif nametolist[i][j] == 'M':
sum+=13
elif nametolist[i][j] == 'N':
sum+=14
elif nametolist[i][j] == 'O':
sum+=15
elif nametolist[i][j] == 'P':
sum+=16
elif nametolist[i][j] == 'Q':
sum+=17
elif nametolist[i][j] == 'R':
sum+=18
elif nametolist[i][j] == 'S':
sum+=19
elif nametolist[i][j] == 'T':
sum+=20
elif nametolist[i][j] == 'U':
sum+=21
elif nametolist[i][j] == 'V':
sum+=22
elif nametolist[i][j] == 'W':
sum+=23
elif nametolist[i][j] == 'X':
sum+=24
elif nametolist[i][j] == 'Y':
sum+=25
else:
sum+=26
total += sum*(i+1)
sum=0
質問望ましい行動を含める必要があり、特定の問題やエラーして再生するために必要な最短コード(「**なぜこのコードは動作しないの**?」)それは問題そのものです** **明確な問題文**のない質問は他の読者には有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –
あなたの26のelseifを 'sum + = ord(nametolist [i] [j]) - ord( 'A')+ 1;'に変更することができ、このコードを人間が読めるようにすることができます – Guiroux
私の推測あなたが 'for'文の後ろに' elif'を持っているので、あなたが提供したコードが有効なpython構文ではないからです。 –