2013-05-01 28 views
9

nie mam pojęcia, dlaczego to nie działa, proszę o pomocSyntaxError: nieoczekiwany EOF podczas parsowania

import random 
x = 0 
z = input('?') 
int(z) 

def main(): 
    while x < z: 
     n1 = random.randrange(1,3) 
     n2 = random.randrange(1,3) 
     t1 = n1+n2 
     print('{0}+{1}={2}'.format(n1,n2,t1) 

Gdy ten wyprowadza ten błąd

File "/Users/macbook/Documents/workspace/gamlir_filar/samlagning.py", line 12 

               ^
SyntaxError: unexpected EOF while parsing 

Używam Eclipse i Pythona 3.3 i nie mam pojęcia, dlaczego tak się dzieje. Czasami daje takie błędy.

+10

Ilekroć pojawi się 'SyntaxError' to nie ma sensu na linii, która wygląda doskonale lub zupełnie pusto, warto spojrzeć na linię przed nią. Jeśli poprzedni wiersz nie zawiera nawiasów, nawiasów, nawiasów itp., Linia, którą przeglądasz, traktowana jest jako kontynuacja poprzedniej linii. – abarnert

+0

Kilka uwag bocznych: Po prostu wywołanie 'int (z)' nic nie robi (z wyjątkiem podniesienia wyjątku, 'z' nie może być analizowany jako liczba całkowita); musisz gdzieś przechowywać wynik (np. 'z = int (z)'). Ponadto, ponieważ nigdy nie modyfikujesz 'x' lub' z' w pętli (i jeśli _did_, to daje ci 'UnboundLocalError'),' x abarnert

Odpowiedz

21

Brakuje nawias zamykający ) w print():

print('{0}+{1}={2}'.format(n1,n2,t1)) 

i ty też nie przechowywać zwracanej wartości od int(), więc z nadal jest ciągiem.

z = input('?') 
z = int(z) 

lub po prostu:

z = int(input('?')) 
+0

dziękuję! powinienem zauważyć, że ... – Quar

+2

@ user2341020 Cieszę się, że pomógł, możesz [zaakceptować odpowiedź] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235# 5235), jeśli zadziałało dla ciebie. –

2

Może to jest to, czego chciałem zrobić:

import random 

x = 0 
z = input('Please Enter an integer: ') 
z = int(z) # you need to capture the result of the expressioin: int(z) and assign it backk to z 

def main(): 
    for i in range(x,z): 
     n1 = random.randrange(1,3) 
     n2 = random.randrange(1,3) 
     t1 = n1+n2 
     print('{0}+{1}={2}'.format(n1,n2,t1)) 

main() 
  1. zrób z = int (z)
  2. Dodaj nawias brakuje zamykającą na ostatnim wierszu kodu we wpisie.
  3. i mają do pętli, która będzie iteracyjne od x do Z-1

Oto link na zakres() Funkcja: http://docs.python.org/release/1.5.1p1/tut/range.html

Powiązane problemy