[英]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.