2008-12-03 8 views
14

Einige von Ihnen können dies als Project Eulers Problem Nummer 11 erkennen. Die mit dem Gitter.Python: Invalid Token

Ich versuche, das Gitter in einem großen mehrdimensionalen Array zu replizieren, aber es ist mir einen Syntaxfehler geben, und ich bin nicht sicher, warum

grid = [ 
[ 08, 02, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91, 08 ], 
[ 49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 04, 56, 62, 00 ], 
[ 81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 03, 49, 13, 36, 65 ], 
... 

Und ich diesen Fehler:

 
    File "D:\development\Python\ProjectEuler\p11.py", line 3 
    [ 08, 02, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91 , 08 ], 
    ^SyntaxError: invalid token 

Warum wirft es einen Fehler vor dem Komma?

Antwort

37

Ich denke, wenn Sie eine Literalzahl mit einer 0 beginnen, interpretiert es es als eine Oktalzahl und Sie können nicht eine '8' in einer Oktalzahl haben.

3

Beachten Sie, dass das "^" Symbol im Fehler genau auf die fehlerhafte Spalte zeigt. Zusammen mit der Zeilennummer zeigt es genau auf die Ziffer 8. Dies kann Ihnen helfen, zu dem zu gelangen, was Jeremy vorgeschlagen hat.

+0

Obwohl Sie einen netten Tipp gegeben haben, beantwortet dies die Frage nicht. Ich denke, das sollte ein Kommentar und keine Antwort sein. -1. – Bonifacio2

+1

@ Bonifacio2: Ich denke, dies ist nicht nur eine Antwort, sondern auch eine gute, auch wenn es die Frage des OP nicht vollständig beantwortet. Diese Antwort hilft dem OP, den Syntaxfehler zu parsen. Ursprünglich (vor dem Bearbeiten) fragte er "Warum wirft es nach dem Komma einen Fehler?" Wenn der Fehler tatsächlich vor dem Komma liegt, kann meine Antwort ihm helfen herauszufinden, wo der Fehler liegt. "geben Sie einem Mann einen Fisch und Sie füttern ihn für einen Tag; unterrichten Sie einen Mann, um zu fischen, und Sie füttern ihn für ein Leben" – yairchu

1

Nur führende Nullen entfernen.

Erste Null macht die Zahl oktal.