Ошибка с отступом в блоке if [duplicate]

7 ответов

Это неверно, по крайней мере:

            for x in range(x, 1, 1):
        elif option == 0:
1
ответ дан Achim 17 August 2018 в 11:47
поделиться
#option = 1
#while option != 0:

print ("MENU")
print("please make a selection")
print("1. count")
print("0. quit")
option = int(input("MAKE Your Selection  "))
if option == 1:
    print("1. count up")
    print("2. count down")
    print("0. go back")
    option = int(input("MAKE Your Selection  "))
    if option == 1:
        x = int(input("please enter a number   "))
        for x in range(1, x, 1):
            print (x)

    elif option == 2:
        x = int(input("please enter a number   "))
        for x in range(x, 0, -1):
            print (x) 
    elif option == 0:
        print("hi")
    else:
        print("invalid command")
else:
    print ("H!111")
_________________________________________________________________________


You can try this code! It works.
0
ответ дан Arth Talati 17 August 2018 в 11:47
поделиться

В цикле for нет тела цикла:

elif option == 2:
    print "please enter a number"
    for x in range(x, 1, 1):
elif option == 0:

На самом деле весь блок if option == 1: имеет проблемы с отступом. elif option == 2: должен быть на том же уровне, что и оператор if.

2
ответ дан Felix Kling 17 August 2018 в 11:47
поделиться

в python ..... intendation имеет значение, например:

if a==1:
    print("hey")

if a==2:
   print("bye")

print("all the best")

В этом случае «все лучшее» будет напечатано, если выполнено одно из двух условий, но если бы это было например

if a==2:
   print("bye")
   print("all the best")

, тогда «все лучшее» будет напечатано, только если a == 2

3
ответ дан Lance Roberts 17 August 2018 в 11:47
поделиться

Есть несколько проблем:

  1. elif option == 2:, а последующий elif - else должен быть выровнен со вторым if option == 1, а не с for.
  2. В for x in range(x, 1, 1): отсутствует тело.
  3. Поскольку для параметра «1 (счет)» требуется второй вход, вам необходимо вызвать input() во второй раз. Однако, для здравого смысла, я призываю вас сохранить результат во второй переменной, а не повторять option.
  4. Сравнение в первой строке вашего кода, вероятно, должно быть назначением.

Когда вы сможете запустить свой код, вы обнаружите больше проблем (вам понадобится еще несколько вызовов input(), один из вызовов range() будет нуждаться в внимании и т. д.).

Наконец, пожалуйста, не используйте ту же переменную, что и переменная цикла, и как часть начального / конечного условия, как в:

            for x in range(1, x, 1):
                print x

Это может сработать, но это очень запутанно читать. Дайте переменной цикла другое имя:

            for i in range(1, x, 1):
                print i
2
ответ дан NPE 17 August 2018 в 11:47
поделиться

Начиная с elif option == 2:, вы отступали слишком много раз. В достойном текстовом редакторе вы должны выделить эти строки и нажать Shift + Tab, чтобы исправить проблему.

Кроме того, после for x in range(x, 1, 1): нет инструкции. Вставьте отступ pass, чтобы ничего не делать в цикле for.

Кроме того, в первой строке вы написали option == 1. == для равенства, но вы имели в виду = (один знак равенства), который присваивает правильное значение для левого имени, то есть

option = 1
13
ответ дан phihag 17 August 2018 в 11:47
поделиться
  • 1
    vim - достойный редактор, но нажатие клавиш [Ctrl]-[<] (в визуальном режиме, добавление движения в нормальном режиме) – SingleNegationElimination 1 August 2011 в 17:40
  • 2
  • 3
    @Zach Вы хотели написать option = 1 вместо option == 1 в первой строке, не так ли? Обновлен ответ. – phihag 1 August 2011 в 18:03
  • 4
    Ух ты. Да. спасибо ^^ – Zach 1 August 2011 в 18:06
  • 5
    +1 Это работает для меня .. где я получаю ошибку, выше этой строки, я только что применил SHIFT + TAB и работает как charm (y) – Nirav Shah 10 March 2015 в 22:02

Ваш последний оператор for не имеет тела.

Python ожидает, что отложенный блок будет следовать за строкой с помощью for или иметь контент после двоеточия.

первый стиль более распространен, поэтому он говорит, что он ожидает, что какой-то изложенный код будет следовать за ним. У вас есть elif на том же уровне отступа.

1
ответ дан Ray Toal 17 August 2018 в 11:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: