2013-02-27 33 views
5

Próbuję przetłumaczyć jeden z moich projektów Java na język Python i mam problem z jedną określoną linią. Kod Java jest:++ operator w języku Python

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

Co myślę, że to ma być w Pythonie jest

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

... ale ja otrzymuję błąd SyntaxError: invalid syntax.

Jak mogę przetłumaczyć tę Javę na Python?

Odpowiedz

13

Tak, rzeczywiście jest to błąd składniowy.

Prawdopodobnie chcesz:

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

Powodem jest fakt, pyton wymaga wyraz po if słowa kluczowego (docs), natomiast j += 1 jest oświadczenie.


I gratulacje, właśnie uniknął kuli - przez nie tłumaczenia go na adres:

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

który jest poprawny kod python, a prawie na pewno będzie to błąd!

+2

Mam nadzieję, że nikt nie użyje nawiasów w 'if' w ten sposób :) – squiguy

+0

+1 dla poprawnego kodu Pythona, który nie robi tego, czego mógłby oczekiwać nowy programista Pythona (zostałem złapany przez kilka lat temu). – Johnsyweb

0

Operator ++ nie istnieje w języku Python. Zamiast tego można zrobić:

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

Zwrot nie jest równoważny. – wim

+0

To nie wykona żadnego kodu, który jest (prawdopodobnie) po 'if'. –

+0

Prawidłowo, zmieniłem to odpowiednio. –

1

Wystarczy podzielić ją na dwie linie, ponieważ Python nie posiada operator ++.

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

Jak Wim wskazał, i if stwierdzenie wymaga czegoś, co ocenia się wartość PRAWDA lub FAŁSZ. W Javie część ++j zostanie oceniona przed porównaniem. Następnie zostanie porównana nowa wartość j, co spowoduje wyrażenie prawdziwe lub fałszywe.

0

Operator + = jest operatorem przypisania. Operatory przypisania muszą być uruchamiane oddzielnie od instrukcji warunkowej. Należy uruchomić kod tak:

j+=1 
if j==9: 
    return True 
0
  • Brak ++ (lub --) operatorów w Pythonie.
  • j += 1 nie zwraca wartości, więc nie ma nic do porównania.

To wygląda tak, jak chcesz:

if j == 8: 
    return True 

Jeśli j jest global (zwykle mile widziana), a następnie:

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

j += 1 jest równoważna j = j + 1. W rzeczywistości nie zwraca wartości, ale po prostu nadpisuje zmienną j. Jestem zakładając, chcesz zobaczyć, czy j + 1 == 9, więc wymienić:

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

Z:

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