#python #python-3.x #python-idle
#python #python-3.x #python-idle
Вопрос:
Есть ли сочетание клавиш для обратной вкладки в Python IDLE?
Я пытаюсь написать оператор if-elif-else, но не могу выполнить обратную табуляцию для правильного отступа оператора elif. Я пробовал shift tab и shift ctrl tab.
Например, я могу написать это…
if x < 0:
print('Less than Zero')
но когда я пытаюсь добавить оператор elif…
elif x == 0:
print('Zero')
Я получаю следующее сообщение об ошибке:
SyntaxError: unindent does not match any outer indentation level
Ответ №1:
ctrl [ уменьшает отступы выделенного кода. ctrl ] отступы.
Вы можете увидеть все ярлыки, если заглянете в меню «Редактировать» в верхней части редактора.
Комментарии:
1.
ctrl [
Ярлык работает. Однако в разделе 2.1.2 Интерактивный режим в ссылке на документацию Python говорится, что строки продолжения начинаются со вторичного приглашения (или...
). Мой IDLE этого не делает и вместо этого начинается с дальнего левого края оболочки. Есть идеи?2. @hseek Вы используете полный редактор или REPL? Если у вас открыт файл в редакторе, вы не находитесь в интерактивном режиме. Хотя это звучит как отдельный вопрос.
3. Я использую оболочку Python 3.7.2.
4. @hseek Оболочка IDLE работает с полными инструкциями, а не со строками. Следовательно, он не использует вторичные запросы для строк продолжения.
5. Правильный способ удалить отступ в одной строке — использовать пробел, обычно отмеченный ‘<—‘. Выбор не требуется. Подробнее смотрите мой ответ.
Ответ №2:
Для обратной
ctrl [
Для противоположной
ctrl ]
Ответ №3:
Используйте клавишу обратного пробела для выделения. Проще всего сделать это перед вводом любого кода. Если в строке уже есть код, поместите курсор редактирования между концом отступа и началом кода, прежде чем нажимать пробел. Обратите внимание, что в IDLE вводятся, редактируются и отправляются полные инструкции для выполнения. Следовательно, нет дополнительных подсказок. Пример:
>>> a, x, y = 1, 2, 3 # Bind some names. This is one statement.
>>> if a: # When you hit return, IDLE see that you entered the header
# of a compound statement and indents the next line with a Tab.
# Note that I have to use 8 spaces here instead of a tab.
print(x) # When you hit return, IDLE keeps the same indent.
# Use Backspace [<--] to dedent back to the margin.
else: # Do not line up 'else' with 'if' by adding 4 spaces.
# Since this is another header, an indent is added on the next line.
print(y) # No header, indent kept the same.
# Hit Return to enter blank line
Последняя пустая строка сигнализирует о том, что составная инструкция завершена и должна быть выполнена. До тех пор можно редактировать любую часть инструкции.
Я немного ошеломлен тем, что 3 человека предложили неудобный и гораздо более сложный обходной путь выбора строки или, по крайней мере, отступа и использования control-[ . Я думаю о том, как сделать простой способ более очевидным.
Я знаю, что наличие ‘if’, ‘elif’ и ‘else’, не выстроенных в ряд, является неприятностью. Я намерен это исправить.
Ответ №4:
То, что вы делаете, — это ярлык в Spyder, но нет, в idle вы должны делать:
Ctrl [
И наоборот было бы:
Ctrl ]
Комментарии:
1. Правильный способ удалить отступ в одной строке — использовать пробел, обычно отмеченный ‘<—‘. Выбор не требуется. Подробнее смотрите мой ответ.