2013-02-27 14 views
5

Javaプロジェクトの1つをPythonに翻訳しようとしていますが、ある特定の行に問題があります。 Javaコードは次のようになります。これはpythonですることになっている私は何を考えて++ i演算子(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 

j += 1声明であるのに対し、Pythonは、ifキーワード(docs)後表現を必要とするための理由があります。 が有効なPythonコードある

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

を、そしてほぼ確実にバグのようになります。それを翻訳しないで -


そしておめでとう、あなただけの弾丸をかわしてきました!

+2

うまくいけば、誰もそれのような 'if'の中で括弧を使用することはできません:) – squiguy

+0

新しいPythonプログラマが期待しているようなものをしない有効なPythonコードの例は+1です。 – Johnsyweb

0

++演算子はPythonでは存在しません。代わりに、あなたは何ができる:

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

リターンは同じではありません。 – wim

+0

これは 'if'の後に(おそらく)どんなコードも実行しません。 –

+0

正解、私はそれに応じてそれを変更しました。 –

1

をPythonが++演算子を持っていないので、わずか2行に分割して。 WIMとして

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

指摘、及びif文はTrueまたはFalseの値を評価する何かを必要としています。 Javaでは、++j部分が比較の前に評価されます。次に、新しいjの値が比較され、結果として真または偽の表現が得られます。

0

+ =演算子は代入演算子です。代入演算子は、条件文とは別に実行する必要があります。

j+=1 
if j==9: 
    return True 
0
  • のPythonには++(または--)演算子はありません:あなたはこのようなコードを実行する必要があります。
  • j += 1は値を返しませんので、比較対象はありません。

あなたが望むように見えます:

if j == 8: 
    return True 

jが(通常はひんしゅくを買う)globalであれば、:

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

j += 1j = j + 1と同等です。実際には値は返されませんが、変数jは上書きされます。私はあなたがj + 1 == 9かどうかを確認したい前提なので、交換してくださいよ:

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

で:

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