2013-02-27 54 views
5

我想將我的一個Java項目翻譯成Python,並且遇到了某個特定行的問題。 Java代碼是:++我在Python中的運算符

if (++j == 9) 
    return true; 

我想這應該是在巨蟒

if (j += 1) ==9: 
     return True 

...但我得到一個錯誤SyntaxError: invalid syntax

如何將此Java轉換爲Python?

回答

13

是的,這確實是一個語法錯誤。

你可能想:

j += 1 
if j == 9: 
    return True 

的原因是因爲Python需要if關鍵字(docs)後表達,而j += 1聲明


,恭喜你,你剛剛逃過了一劫 - 由它不翻譯成:

if (++j == 9): 
    return True 

是有效的Python代碼,並且幾乎肯定會是一個錯誤!

+2

希望沒有人會在這樣的if中使用括號:) – squiguy 2013-02-27 07:06:05

+0

對於有效的Python代碼示例,它不會執行一個新的Python程序員可能會期望的事情(我幾年前被捕獲)。 – Johnsyweb 2013-02-27 07:35:53

0

++運算符在Python中不存在。相反,你可以這樣做:

j += 1 
if j == 9: 
    return True 
+0

回報是不等價的。 – wim 2013-02-27 06:54:06

+0

這將不會執行'if'後的任何代碼(可能)。 – 2013-02-27 06:55:21

+0

正確,我已經相應地改變了它。 – 2013-02-27 06:55:43

1

把它分成兩行,因爲Python沒有++運算符。

j += 1 
if j == 9: 
    return True 

由於WIM指出,和if語句需要的東西,計算結果爲true或false值。在Java中,++j部分將在比較之前進行評估。然後,新的值將被比較,從而導致真實或錯誤的表達。

0

+ =運算符是賦值運算符。賦值運算符需要與條件語句分開運行。您應該運行這樣的代碼:

j+=1 
if j==9: 
    return True 
0
  • 在Python中沒有++(或--)運營商。
  • j += 1不返回一個值,所以沒有什麼可比較的。

它看起來像你想:

if j == 8: 
    return True 

如果jglobal(通常是令人難以接受的),則:

j += 1 
if j == 9: 
    return True 
0

j += 1相當於j = j + 1。它實際上並不返回一個值,而只是覆蓋變量j。我假設你想看看j + 1 == 9,所以更換:

if (j += 1) ==9: 
    return True 

有了:

j += 1 
if j == 9: 
    return True