Подтвердить что ты не робот

Python "ожидал отложенный блок"

Позвольте мне начать с того, что я ПОЛНОСТЬЮ новичок в программировании. Я только что взял Python, и он последовательно ударил меня в голову с одной повторяющейся ошибкой - "ожидаемый отступом блок", Теперь я знаю, что есть несколько других тем, которые рассматривают эту проблему, и я просмотрел их большое количество, однако даже проверка моего отступов не дала мне лучших результатов. Я заменил все свои отступы на 4 пробела и даже переписал код несколько раз. Я отправлю это назначение счетчика, которое я получил в качестве примера.

option == 1
while option != 0:
    print "MENU"
    option = input()
    print "please make a selection"
    print "1. count"
    print "0. quit"
    if option == 1:
        while option != 0:
            print "1. count up"
            print "2. count down"
            print "0. go back"
            if option == 1:
                print "please enter a number"
                for x in range(1, x, 1):
                    print x
                elif option == 2:
                    print "please enter a number"
                    for x in range(x, 1, 1):
                elif option == 0:
                    break
                else:
                    print "invalid command"
    elif option == 0:
        break
4b9b3361

Ответ 1

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

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

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

option = 1

Ответ 2

в python..... важно, например:

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

В цикле 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.

Ответ 4

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

  • elif option == 2:, а последующий elif - else должен быть выровнен со вторым if option == 1, а не с for.

  • for x in range(x, 1, 1): отсутствует тело.

  • Поскольку для параметра "1 (счет)" требуется второй вход, вам нужно позвонить input() во второй раз. Однако, ради здравого смысла, я призываю вас сохранить результат во второй переменной, а не перепрограммировать option.

  • Сравнение в первой строке вашего кода, вероятно, должно быть назначением.

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

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

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

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

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

Ответ 5

В последнем последнем теге for отсутствует тело.

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

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

Ответ 6

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

            for x in range(x, 1, 1):
        elif option == 0:

Ответ 7

#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.

Ответ 8

Я также новичок в Python и столкнулся с такой же проблемой.

Я использовал онлайн-инструмент https://pythoniter.appspot.com/ для форматирования кода Python, который решил мою проблему.

Ответ 9

Тело цикла с отступом: отступ - это способ группировки операторов в Pythons. В интерактивной подсказке вы должны ввести табуляцию или пробелы для каждой строки с отступом. На практике вы подготовите более сложный ввод для Python с помощью текстового редактора; Все приличные текстовые редакторы имеют функцию авто-отступа. Когда составной оператор вводится интерактивно, за ним должна следовать пустая строка, указывающая на завершение (поскольку анализатор не может угадать, когда вы ввели последнюю строку). Обратите внимание, что каждая строка в базовом блоке должна иметь одинаковый отступ.

источник: ##

## https://docs.python.org/3/tutorial/introduction.html#using-python-as-a-calculator