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
Ответы
Ответ 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