Python“期望一个缩进的块”

时间:2011-08-01 16:25:07

标签: 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

9 个答案:

答案 0 :(得分:17)

elif option == 2:开始,您缩短了一次。在体面的文本编辑器中,您应该能够突出显示这些行并按 Shift + Tab 来解决问题。

此外,for x in range(x, 1, 1):之后没有声明。插入缩进的pass以在for循环中不执行任何操作。

另外,在第一行中,您编写了option == 1==测试相等性,但你的意思是=(单个等号),为左名指定正确的值,即

option = 1

答案 1 :(得分:7)

在python中......意图很重要,例如:

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

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

print("all the best")

在这种情况下"一切顺利"如果两个条件中的任何一个执行,将被打印,但如果它是这样的

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

然后"一切顺利"只有在== 2

时才会打印

答案 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语句处于同一级别。

答案 3 :(得分:3)

有几个问题:

  1. elif option == 2:以及随后的elif - else应与第二个if option == 1对齐,而不是for

  2. for x in range(x, 1, 1):缺少一个正文。

  3. 由于“选项1(计数)”需要第二次输入,因此您需要第二次调用input()。但是,为了理智,我建议您将结果存储在第二个变量中,而不是重新调整option

  4. 代码第一行的比较可能是作业。

  5. 一旦您能够运行代码,您就会发现更多问题(您需要再拨input()range()次来电, for x in range(1, x, 1): print x 来电之一需要注意等等。)

    最后,请不要使用与循环变量相同的变量,也不要将其作为初始/终端条件的一部分,如:

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

    它可能有效,但阅读起来非常混乱。为循环变量赋一个不同的名称:

    {{1}}

答案 4 :(得分:1)

您的上一个for声明缺少一个正文。

Python期望缩进块跟随for的行,或者在冒号后面有内容。

第一种风格更常见,因此它表示它希望有一些缩进代码可以遵循它。您在同一缩进级别有一个elif

答案 5 :(得分:1)

这个至少是错误的:

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

答案 6 :(得分:1)

Python对空格和缩进非常挑剔,比许多语言都更加挑剔。原因是,Python而不是使用花括号和分号(例如javascript或php),而是查找返回字符(按键盘上的enter / return键)而不是分号,并在其后带有一个制表符的冒号用于打开支撑。当下一段代码不缩进时,它期望它与Javascript或PHP中的右花括号相同。

来自==> https://teamtreehouse.com/community/what-is-a-indentationerror-expected-an-indented-block

答案 7 :(得分:0)

#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 :(得分:0)

循环的主体是缩进的:缩进是Python对语句进行分组的方式。在交互式提示下,您必须为每个缩进的行键入一个制表符或空格。在实践中,您将使用文本编辑器为Python准备更复杂的输入。所有体面的文本编辑器都具有自动缩进功能。以交互方式输入复合语句时,必须在其后跟随一个空行以指示完成(因为解析器无法猜测您何时键入了最后一行)。请注意,基本块中的每一行都必须缩进相同的数量。

src:##

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