2016-09-03 3 views
-1

Я борюсь с оператором If Else в Python 3.5.2, который я недавно установил. Я использую IDLE для запуска моего кода.Python if else синтаксис

Вот мой код ниже (screenshot).

Я получаю синтаксическую ошибку, как только нажимаю клавишу «Enter» после «Else». Я пробовал играть с отступом, двоеточием и т. Д., Но я получаю ошибку во всех комбинациях, которые я пробовал до сих пор. Я видел похожие вопросы (для предыдущей версии python) здесь, а также Quora, но ни одно из этих решений не работает для меня. Пожалуйста помоги! (Я использую MacBook - в случае изменения чего-либо).

+0

Вы печатаете непосредственно в оболочке IDLE, а не в редакторе IDLE. В строке меню выберите «IDLE -> Новый файл» и введите в него код, а затем запустите его. – jwpfox

+0

Я считаю, что он может это сделать, поскольку это просто REPL: https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop –

+0

Спасибо. Это действительно срабатывало, когда я привязывался к редактору IDLE. Вы знаете, почему он работает в редакторе, но не в оболочке? Или мы не должны писать код в оболочке? – ps1495

ответ

0

Использование Python 3.5.2, но не холостых, это то, что он выглядит, когда ваш код выполняется успешно:

>>> x = 8 
>>> if x==10: 
... print('X is 10') 
... else: 
... print('Not') 
... 
Not 
>>> 

Правильная форма else: с двоеточием. Это соответствует вашей третьей попытке, для которой ошибка, которую видит, вызывает жалобы на отступ. Я не вижу, что вы вдавили, но измените это, пока не выясните, что хочет.

+0

Спасибо. Еще один вопрос: я попробовал код третьей попытки в редакторе IDLE, и он сработал. Я не уверен, почему это не сработало, когда я ввел в оболочку IDLE. – ps1495

0

третий пример почти правильный, но вы должны предоставить что-то на else ветви, либо какой-то код или pass (или просто опускать else целиком)

EDIT: После объяснил проблема с IDLE интерактивной оболочки в конкретных, я попробовал себя и следующий код работает:

enter image description here

Это тоже (так отступы, кажется, работает о п если сама отрасль):

enter image description here

И это:

enter image description here

Оболочка автоматический отступ тихо запутанная. не сказать багги. Яснее на равнине python интерактивный режим. >>> добавляет визуальный отступ, но там нет отступов. Корпус if имеет отступы от предыдущего плюс один, хотя это выходит как два углубления, это разрешено и не вызывает никаких проблем. Оператор else должен иметь тот же отступ, что и if - 0 отступ (а не один как подсказки для визуализации). Таким образом, вам действительно нужно удалить автоматически добавленный отступ, инструкции else, вплоть до начала.

+1

Он бы это сделал, но у него никогда не было шанса. Ошибка была нажата после нажатия 'else'. –

+1

Это правильно. Я никогда не доходил до точки, где я мог бы предоставить что-то другому, поскольку до этого я получаю ошибку. Интересно, что этот код работает в редакторе IDLE, но не в оболочке IDLE. Почему это? – ps1495

+0

Привет, ребята, спасибо. Я не понял, что это специфично для IDLE, подумал, что это простой вопрос python (вы можете добавить теги). Обновлен мой ответ. – creativeChips

1

Dont отступа (вкладка) «еще:» Я думаю, что причина Идла «>>>» подсказка не выровнен в отличие от терминала

1

Возьмем пример # 3:

Python видит код в качестве

if x==10: 
     print("X is 10") 
    else: 

Отступ над этим, очевидно, перепутался.Но это выглядит правильно, потому что >>> подсказки нажимает первую строку на несколько символов, что делает ее похожей на нее правильной. Но даже если он выглядит так в оболочке, python по-прежнему видит if x==10: как находящийся в col 0, и считает, что print("X is 10") имеет отступы на 8 пробелов и else: имеет отступы на 4 пробела.

Когда вы ввели его в окне редактирования, отступы фактически оказалось по-другому, например, так

if x==10: 
     print("X is 10") 
else: 

, которая на самом деле правильно (игнорируя тот факт, что нет ничего под else).

Смежные вопросы