2011-11-13 23 views
-3

我不斷收到錯誤,每當我輸入驗證碼(我是一個python小白所以我可能失去了一些東西明顯)這個python代碼有什麼問題 - SyntaxError?

def expadd(num, exp): 
    while ((num and exp) != (1001)): 
     return (num^exp) + expadd((num + 1), (exp + 1)) 
    return 0 
buffer = str(expadd(1000, 1000) 
total = 0 #error here "syntax error" 
for i in range(1,10): 
    total = total + int(buffer[-i]) 
print total 
+0

縮進在python中很重要。確保您發佈的內容與您的代碼完全匹配。 – Mat

回答

2

除了語法錯誤,也有一個邏輯錯誤:

while ((num and exp) != (1001)): 

永遠是True,因爲無論01來自1001不同。 (num and exp)檢查numexp是否爲True ish(對於數字,如果它們不是0,則是這種情況)。其結果可能是1True)或0False),並且它們都不同於1001

然後,@interjay正確指出您應該使用if而不是while

你可能是指

if (num != 1001) and (exp != 1001): 

(括號是沒有必要的,我只是說他們爲清楚起見)

此外,^是二進制xor,不求冪。那就是**運營商:

>>> 2^4 
6 
>>> 2**4 
16 
+0

做'而while ___:return ___'也值得懷疑,因爲它與if區塊的效果相同。 – interjay

+0

@interjay:對!謝謝! –

3

您在前行中缺少一個右括號:

buffer = str(expadd(1000, 1000) 

您的代碼也被錯誤地縮進(expadd函數的主體應該縮進),但由於錯誤的位置,我認爲這只是由於在這裏複製/粘貼所致。

+0

*總檯* - 感謝 – Jobla6