[英]Python gives a “Syntax Error” on “else:”
我的錯誤
Python拋出語法錯誤,該語法錯誤指向“ else:”的最后一個“ e ” ,其前面是if語句,並在while循環內。
我的目標
測試某些參數是否為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語句有關。
在此先感謝您的幫助。
需要縮進print("testing if it isnt")
。 就目前而言,由於縮進,您的代碼實際上並未將if
與else
關聯。 就像在C語言中這樣寫:
if(<condition>)
{
<action>
}
prinf(...)
else
{
<action>
}
只需將打印行與if
語句下的其余代碼對齊。
該行:
print("testing if it isnt")
沒有正確縮進。 在if
塊和else
塊之間不能有任何東西。
您的聲明:
print("testing if it isnt")
縮進錯誤的級別; 這使得else:
遵循獨立的陳述,這在語法上是錯誤的。 可能是您的意思是print
語句要跟隨else
並縮進一個級別。
這很可能是縮進/空格/制表符的問題,因為我復制粘貼了代碼並且沒有收到任何錯誤。 雖然我使用的是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僅會導致退出)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.