проблема с отступом Python с простым кодом, если, иначе - PullRequest
0 голосов
/ 20 июня 2019

Когда я нажимаю клавишу ввода после ввода else:, чтобы перейти к следующей строке, выдается ошибка, независимо от того, как я ее выровняю, я пробовал 4 пробела, все по-прежнему не работает. Я убедился, что else идеально выровнен с if, как в книге, но все равно ошибка.

Может кто-нибудь объяснить мне, как работает отступ? Я использую Python 2.7

Код:

if x%2 == 0:
    print "Even"
else: 
    print "Odd"
print "done with conditional"

screenshot of console session

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Предположим, как если бы Python имел обратную иерархическую структуру, подобную инвертированному трэнглу.

  1. , когда вы захотите написать функцию / цикл / условия на 1-м уровне, мы напишем любой код, который мыпишите внутри этих трех разделов на 2-м уровне.

  2. В вашем коде "if" и "else" входят в 1-й уровень.поэтому не ставьте перед ними пробелы.

  3. операторы print внутри 'if' и 'else' должны иметь то же пространство табуляции или пробел, что и для 2-го уровня.

  4. во внешнем операторе печати не будет пробела, поскольку он снова переходит на 1-й уровень.

Надеюсь, это поможет

0 голосов
/ 20 июня 2019

В консоли Python все отлично работает с положительным числом пробелов или табуляцией; так что любой из этих примеров будет работать:

if True:
 print('Hello')
else:
 print('Not hello')

if True:
    print('Hello')
else:
    print('Not hello')

if True:
        print('Hello')
else:
        print('Not hello')

EDIT Для поиска, где проблема, попробуйте этот ответ ; Звоните

python -m tabnanny <your_script>.py

и вы получите вывод о том, какие строки являются проблемой.

Пример вывода:

'test.py': Indentation Error: unindent does not match any outer indentation level (<tokenize>, line 12)
...