2008-12-03 12 views
14

Niektórzy z was mogą uznać to za problem numeryczny projektu Eulera 11. Ten z siatką.Python: Nieprawidłowy token

Próbuję replikować siatkę w dużej tablicy wielowymiarowej, ale to daje mi błąd składni i nie jestem pewien, dlaczego

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 ], 
... 

i dostaję ten błąd:

 
    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 

Dlaczego wyświetla błąd przed przecinkiem?

Odpowiedz

37

Myślę, że po rozpoczęciu literalnej liczby o wartości 0, interpretuje się ją jako liczbę ósemkową i nie można mieć liczby "8" w liczbie ósemkowej.

3

Należy zauważyć, że symbol "^" w błędzie wskazuje dokładnie na błędną kolumnę. Wraz z numerem linii wskazuje dokładnie na cyfrę 8. To może pomóc ci zasugerować Jeremy.

+0

Chociaż podałeś miłą wskazówkę, nie jest to odpowiedź na pytanie. Myślę więc, że powinien to być komentarz, a nie odpowiedź. -1. – Bonifacio2

+1

@ Bonifacio2: Myślę, że nie tylko jest to odpowiedź, ale także dobra, nawet jeśli nie w pełni odpowiada na pytanie PO. Ta odpowiedź pomaga OP przeanalizować otrzymany błąd składniowy. Oryginalnie (przed edycją) zapytał "Dlaczego wyświetla błąd po przecinku?" kiedy w rzeczywistości błąd występuje przed przecinkiem, a moja odpowiedź może pomóc mu dowiedzieć się, gdzie jest błąd. "Daj człowiekowi rybę, którą karmisz go na jeden dzień, naucz człowieka łowić, a karmisz go na całe życie" – yairchu

1

Po prostu usuń początkowe zera.

Pierwsze zero tworzy liczbę ósemkową.

Powiązane problemy