我的错误
Python抛出一个语法错误,指向“else:”的最后“e”,前面是 if 语句,并在中而循环。
我的目标
测试某些参数是否为true,如果为true则转到循环的开头,如果不为true,则执行某些语句并递增一个值。
我的源代码
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")
我的研究
我查看了StackOverflow和其他网站上的许多问题,但无法找到问题的解决方案;人们使用 else 语句遇到的大多数问题都与标签错误,前面的错误(我检查过)有关,前面没有 if 语句,或多个 else 陈述。
提前感谢您的帮助。
答案 0 :(得分:3)
print("testing if it isnt")
需要缩进。就目前而言,由于缩进,您的代码并未真正将if
与else
相关联。这就像在C:
if(<condition>)
{
<action>
}
prinf(...)
else
{
<action>
}
只需将打印行与if
语句下的其余代码对齐。
答案 1 :(得分:1)
该行:
print("testing if it isnt")
没有正确缩进。 if
块和else
块之间不能包含任何内容。
答案 2 :(得分:0)
您的陈述:
print("testing if it isnt")
缩进到错误的水平;这使得else:
遵循一个独立的语句,这在语法上是错误的。可能你的意思是print
语句跟随else
并缩进一级。
答案 3 :(得分:0)
这很可能是缩进/空格/标签问题,因为我复制粘贴代码并且我没有收到任何错误。虽然我在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循环将需要很长时间才能退出,因为退出条件非常小(两个当前&lt; = 36只会导致退出)。