Обратная вкладка в Python IDLE (3.7)

#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. Правильный способ удалить отступ в одной строке — использовать пробел, обычно отмеченный ‘<—‘. Выбор не требуется. Подробнее смотрите мой ответ.