簡體   English   中英

if語句中的Python語法錯誤

[英]Python Syntax Error in if statement

我堅持使用Python if語句。 我幾乎完成了所有工作,但是在運行progarmm時,它在第一行中給了我一個語法錯誤:我確定我做對了所有事情,但是由於我對Python和編程非常陌生,所以可能只是非常愚蠢的錯誤...感謝大家的幫助!

if a == 2:   
StartDeckNeighbourright = StartDeck[a + 1]
StartDeckNeighbourright2 = StartDeck[a + 2]

如果這不是jramirez的答案所解決的IndentationError ,而是實際的SyntaxError ,則可能是if語句之前的行有問題。

在Python中,只要表達式在括號內,就可以跨多行繼續表達式。 因此,如果在函數調用,元組或其他任何內容的結尾不小心遺忘了) ,則通常在下一行會收到一個神秘的SyntaxError 例如,此代碼:

foo = (1, 2
if a == 2:
    pass

…將給出此錯誤:

    if a == 2:
             ^
SyntaxError: invalid syntax

僅添加另一個逗號會將錯誤移到其他地方!

foo = (1, 2,
if a == 2:
    pass

    if a == 2:
     ^
SyntaxError: invalid syntax

為什么? 好吧,即使您確切地理解了這些錯誤的含義,它們仍然不是很有幫助。 所以首先,請記住:

如果在完全有效的行上出現SyntaxError在上面的行中查找缺少的) (或]} ,或多余的\\ ,或其他一些特殊情況)。

而且,如果您可以找到一個可以幫助您將括號和括號匹配起來的編輯器,則將大大減少此問題的發生。 (例如,使用emacs,至少按照我的設置方式,它會自動嘗試為我縮進if 7行字符,如果我“修復”它會反擊我,最終“很難不注意到出了什么問題。然后我指着第一個(它告訴我這是無與倫比的。)

但是,如果您想知道,這里有:

第一個版本使用值1構建一個元組,然后以2開始並繼續到下一行的值。 2 if a == 2是三元if表達式的一個很好的開始, if 2 if a == 2: ;但是2 if a == 2:不是,則為2 if a == 2: 冒號將其強制為if語句,並且您不能在表達式中間放置一條語句。

第二個版本將構建一個元組,其值1 ,值2以及更多值在下一行繼續。 if不能作為任何有效表達式的開始,因此您可以較早地獲得SyntaxError 但是,當然還不夠早就有用。

您應該發布所看到的錯誤,但是我認為您所需要的只是if語句后的縮進

if a == 2:   
    StartDeckNeighbourright = StartDeck[a + 1]
    StartDeckNeighbourright2 = StartDeck[a + 2]
---- four spaces of indentation

在python中,您必須使用縮進:

if a == 2:
    StartDeckNeighbourright = StartDeck[a + 1]
    StartDeckNeighbourright2 = StartDeck[a + 2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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