Python 在 "else:" 上给出 "Syntax Error"

Python gives a "Syntax Error" on "else:"

我的错误
Python 抛出指向 "else:" 的最后 "e" 的语法错误,前面是 if 语句和 while 循环内。
我的Objective
测试某些参数是否为真,如果为真则转到循环的开头,如果不为真则执行某些语句并递增一个值。
我的源代码

from random import randint

def returnDigRoot(num):
    digs = []
    while len(str(num)) != 1:
        num = str(num)
        for each in num:
            digs.append(each)
        num = int(num)
        digs = [int(i) for i in digs]
        num = sum(digs)
    return(num)
def rnum():
    return(randint(1,99999))
ran_nums = []
sols = []
it = 1

问题所在

while it <= 3:
    print("Generating numbers")
    current = randint(1,99999)
    print("randomly intializing the 'current' int value")
    print("testing if the digital root is greater than 6")
    if returnDigRoot(current) > 6:
        print("going back to start of loop")
        continue
    print("testing if it isnt")
    else:
        ran_nums.append(current)
        print("append 'current' to ran_nums")
        sols.append(returnDigRoot(current))
        print("appending its digital root to sols")
        it += 1
        print("incrementing the iterator variable")

我的研究
我查看了 Whosebug 和其他网站上的许多问题,但找不到解决我的问题的方法;人们在使用 else 语句时遇到的大多数问题都与制表符错误、前面的错误(我检查过)、没有前面的 if 语句或多个 else 语句。

在此先感谢您的帮助。

行:

print("testing if it isnt")

缩进不正确。 if 块和 else 块之间不能有任何内容。

您的声明:

print("testing if it isnt")

缩进到错误的级别;这使得 else: 后面是一个独立的语句,这在语法上是错误的。可能您的意思是 print 语句跟随 else 并缩进一级。

print("testing if it isnt") 需要缩进。就目前而言,由于缩进,您的代码并没有真正将 ifelse 联系起来。就像在C中写这样的东西:

if(<condition>)
{
  <action>
}
prinf(...)
else
{
 <action>
}

只需将打印行与 if 语句下的其余代码对齐即可。

这很可能是一个 indentation/space/tabbing 问题,因为我复制粘贴了代码并且没有收到任何错误。虽然我在 Python 2.7.10。 (在这里重新粘贴以确保您可以复制粘贴相同的内容并尝试):

from random import randint

def returnDigRoot(num):
    digs = []
    while len(str(num)) != 1:
        num = str(num)
        for each in num:
            digs.append(each)
        num = int(num)
        digs = [int(i) for i in digs]
        num = sum(digs)

    return(num)
def rnum():
    return(randint(1,99999))
ran_nums = []
sols = []
it = 1

while it <= 3:
    current = randint(1,99999)
    if returnDigRoot(current) > 6:
        continue
    else: # this is where the error is pointed
        ran_nums.append(current)
        sols.append(returnDigRoot(current))
        it += 1

顺便提一下,while 循环需要很长时间才能退出,因为退出条件非常小(只有两个电流 <=36 才会退出)。