SyntaxError: неожиданный EOF при синтаксическом анализе

Я понятия не имею, почему это не работает, пожалуйста, помогите

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)

Когда я запускаю это, он выводит эту ошибку

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

                                                ^
SyntaxError: unexpected EOF while parsing

Я использую eclipse и python 3.3 и понятия не имею, почему это происходит. Иногда выдает такие ошибки.


person Quar    schedule 01.05.2013    source источник
comment
Всякий раз, когда вы получаете SyntaxError, который не имеет смысла в строке, которая выглядит совершенно хорошо или совершенно пустой, стоит посмотреть на строку перед ней. Если в предыдущей строке есть незакрытые круглые скобки, фигурные скобки, фигурные скобки и т. д., то строка, на которую вы смотрите, рассматривается как продолжение предыдущей строки.   -  person abarnert    schedule 02.05.2013
comment
Пара примечаний: простой вызов int(z) ничего не делает (за исключением того, что возникает исключение: z не может быть проанализировано как целое число); вам нужно где-то сохранить результат (например, z = int(z)). Кроме того, поскольку вы никогда не изменяете x или z внутри цикла (а если бы вы изменили, это дало бы вам UnboundLocalError), x < z никогда не изменится, поэтому, попав в цикл, вы никогда не сможете получить снова.   -  person abarnert    schedule 02.05.2013


Ответы (2)


Вам не хватает закрывающей скобки ) в print():

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

и вы также не сохраняете возвращаемое значение из int(), поэтому z по-прежнему является строкой.

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

или просто:

z = int(input('?'))
person Ashwini Chaudhary    schedule 01.05.2013
comment
@ user2341020 Рад, что помог, вы можете принять ответ если это сработало для вас. - person Ashwini Chaudhary; 04.05.2013
comment
Вау, я боролся с подобной ошибкой около 30 минут. - person Mikhail Genkin; 02.04.2018

Возможно, это то, что вы хотите сделать:

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. сделать z = int (z)
  2. Добавьте отсутствующую закрывающую скобку в последнюю строку кода вашего листинга.
  3. И есть цикл for, который будет повторяться от x до z-1

Вот ссылка на функцию range(): http://docs.python.org/release/1.5.1p1/tut/range.html

person Kaydell    schedule 01.05.2013