The original question:# 22 Projekt Euler - ich hielt falsche Antwort bekommen
Mit names.txt (Rechtsklick und 'Ziel speichern unter/Target As ...'), ein 46K Text Datei über fünf- enthält Tausend Vornamen, beginnend mit der Sortierung in alphabetischer Reihenfolge. Dann berechnen Sie den alphabetischen Wert für jeden Namen, multiplizieren Sie diesen Wert mit seiner alphabetischen Position in der Liste, um einen Namen Score zu erhalten.
Zum Beispiel, wenn die Liste in alphabetischer Reihenfolge sortiert ist, COLIN, , die 3 + 15 + 12 + 9 + 14 = 53 wert ist, ist der 938. Name in der Liste. Also, COLIN würde eine Punktzahl von 938 × 53 = 49714 erhalten.
Was ist die Summe aller Namen Noten in der Datei?
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
Fragen Debug-Hilfe zu suchen („? ** warum nicht dieser Code arbeitet **“) muss das gewünschte Verhalten, um ein bestimmtes Problem oder Fehler enthalten und den kürzesten Code notwendig zu reproduzieren es ** in der Frage selbst. ** Fragen ohne ** eine klare Problemstellung ** sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). –
Sie können alle Ihre 26 elseif in 'sum + = ord (nametolist [i] [j]) - ord ('A') + 1;' ändern, wäre es ein Anfang, diesen Code lesbar zu machen – Guiroux
meine Vermutung ist, dass Ihre Einrückung für die if else-Anweisungen ausgeschaltet ist, da ** der von Ihnen bereitgestellte Code keine gültige Python-Syntax ist, da Sie eine 'elif' nach einer 'for'-Anweisung haben –