2013-05-07 3 views
0

Я делаю простой маленький калькулятор.Ошибка синтаксиса: Неожиданный EOF во время разбора?

def avg(): 
    sumSoFar = 0 
count = 0 
numCount = 0 

while numCount != "": 
    numCount = eval(input("Please enter a number or press <enter> to quit: ")) 
    sumSoFar += numCount 
    count += 1 


print("The average of these numbers is: ", sumSoFar/count) 

И я получаю ошибку:

numCount = eval(input("Please enter a number or press <enter> to quit: ")) 
File "<string>", line 0 

Syntax Error: unexpected EOF while parsing 

Любая идея, Что по этому вопросу?

+0

любой файл участвует? – matzone

ответ

2

Я предполагаю, что это происходит, когда вы «нажмите < введите > бросить», так как это приведет к input поднимая SyntaxError, потому что нет никакого выражения для оценки.

input(prompt) эквивалентен eval(raw_input(prompt)). Следовательно, неверно eval; если строка ввода (строка, представляющая) номер, то input вернет номер, а eval номера - TypeError. Однако, поскольку вы говорите, что получаете SyntaxError, я делаю вывод, что ваш ввод начинается с пустой строки.

Я действительно не думаю, что input() - это функция, которую вы хотите использовать, но если вы собираетесь ее использовать, и особенно если вы хотите, чтобы цикл прекращался, когда возникло исключение, вам действительно нужно вызовите его в блоке try, чтобы вы могли поймать исключение. С другой стороны, использование raw_input позволит вам проверить, была ли получена пустая строка, но вам нужно сделать это, прежде чем вы назовете eval на строку, поэтому установка теста в состояние while не будет работать.

0

Исправлено:

sumSoFar = 0 

count = 0 

numCount = input("Please enter a number or press <enter> to quit: ") 

while numCount != "": 

    sumSoFar += eval(numCount) 

    count += 1 

    numCount = input("Please enter a number or press <enter> to quit: ") 



print("The average of these numbers is: ", sumSoFar/count 
Смежные вопросы