簡體   English   中英

Python在“ else:”上給出“語法錯誤”

[英]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") 就目前而言,由於縮進,您的代碼實際上並未將ifelse關聯。 就像在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM