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")
需要缩进。就目前而言,由于缩进,您的代码并没有真正将 if
与 else
联系起来。就像在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 才会退出)。
我的错误
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")
需要缩进。就目前而言,由于缩进,您的代码并没有真正将 if
与 else
联系起来。就像在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 才会退出)。