Python "预期一个缩进块

35 投票
8 回答
593042 浏览
提问于 2025-04-16 22:39

我有这段代码:

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

我收到一个错误提示,说是 expected an indented block。我仔细检查了缩进,确保所有的缩进都是用4个空格来做的,但我还是找不到问题所在。

这段代码哪里出错了,我该怎么修复呢?

8 个回答

6

你的 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 语句在同一层级。

9

在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的时候才会被打印出来。

18

elif option == 2: 开始,你的缩进多了一次。在一个好的文本编辑器里,你可以选中这些行,然后按 Shift + Tab 来修正这个问题。

另外,在 for x in range(x, 1, 1): 之后没有任何语句。你可以插入一个缩进的 pass,这样在这个 for 循环里就什么都不做。

还有,在第一行你写了 option == 1。这里的 == 是用来检查是否相等的,但你其实是想用 =(一个等号),这个符号是用来把右边的值赋给左边的名字,也就是说:

option = 1

撰写回答