Python缩进错误,我搞不清楚哪里出错了

-2 投票
2 回答
2083 浏览
提问于 2025-04-16 23:39

我正在使用Notepad++这个软件,它可以显示不同的缩进等。我在第26行总是出现一个错误代码:

return firstNum, secondNum, thirdNum

这是完整的代码。如果有人能看出这里发生了什么,那就太好了。我已经为这个问题烦恼了太久。如果我第一次提问时没有问出具体的问题,我很抱歉。

option = 1
while option !=0:
    print "\n\n\n************MENU************"
    print "1. Counting"
    print "2. Fibbonacci Sequence"
    print "0. GET ME OUTTA HERE!"
    print "*" * 28

    option = input("Please make a selection: ") #counting submenu
    if option == 1:
        print "\n\n*******Counting Submenu*******"
        print "1. Count up by one"
        print "2. Count down by one"
        print "3. Count up by different number"
        print "4. Count down by different number"
        print "*" * 28

        countingSubmenu = input("Please make a selection: ")
        def getNum():
            firstNum = input("Please state what number to start at: ")
            secondNum = input("Please state swhat number to end at: ")
            if countingSubmenu == 3 or countingSubmenu == 4:
                thirdNum = input("Please state what increment you would want to go up by: ")
                return firstNum, secondNum, thirdNum
            else:
                return firstNum, secondNum

        if option == 1:
            getNum(firstNum, secondNum, thirdNum)
            for x in range(firstNum, secondNum+1, 1):
                print x
            print "End of test." #def getNum():

2 个回答

0

在你那行代码前面有三个\t,而在其他地方你用的是四个空格(包括在else和后面的其他return前面)。在Notepad++里有一个设置,可以让你始终用空格代替制表符(tab)。因为我偶尔也用它来写Python,所以我在我的电脑上总是把这个设置打开。

2

下面这三行代码使用了制表符,而不是空格:

                return firstNum, secondNum, thirdNum
            else:
                return firstNum, secondNum

你可以通过尝试编辑这个问题很容易地看到这一点,制表符会显示为8个空格,这样缩进就会明显不对了。

把这些行前面的空白全部删掉,然后只用空格重新缩进,这样就应该不会出现缩进错误了。

不过,你的代码可能还是不正确,因为函数 getNum 目前不接受任何参数,但你却用三个参数去调用它。

编辑: 我觉得你想要做的是在调用 getNum 函数时获取返回值,做到这一点你应该这样调用它:

firstNum, secondNum, thirdNum = getNum()

或者...

result = getNum()
firstNum, secondNum, thirdNum = result

如果你总是让 getNum 返回相同数量的值,可能会更简单。所以把这一行 return firstNum, secondNum 改成 return firstNum, secondNum, None

撰写回答