2017-09-01 8 views
0

私はかなり新しいPythonですので、私に同行してください。このPythonコードはJavaコードと同等ですか?

これは、Javaコードです:私はどのようにしていないので、私はPythonでループのために使用していませんでした

def count_deaf_rats(town): 
    count = 0 
    increment = 0 
    newTown = town.replace(" ", "") 
    while increment <= len(newTown): 
     if newTown[increment]=='O': 
      count +=1 
      increment +=2 
    return count 

public static int countDeafRats(final String town) { 
    String t = town.replaceAll(" ",""); 
    int count = 0; 
    for (int i = 0 ; i < t.length() ; i+=2) 
     if (t.charAt(i) == 'O') count++; 
    return count; 
} 

これは、Pythonにそれを翻訳する私の試みがありますタイトルが言うように、これは許容される翻訳でしょうか?

編集、サンプル入力:~O~O~O~OP~O~OO~

+2

インデントが間違っています。 'def'より下のものはすべて右に字下げしてください。 – Alfabravo

+1

入力例と期待される出力を表示できますか?まっすぐな翻訳ではなく、おそらくこれを自然に行うための非常に難しい方法があります。 – CoryKramer

+2

範囲(0、newTown、2)のiの場合は、2桁ずつインクリメントするためにhttps://docs.python.org/2/library/functions.html#rangeをチェックしてください: ' – bphi

答えて

4

あなたがあなたがPythonで正規表現とリスト内包表記を使用することができ、2ずつ増えインデックスで発生した文字列でゼロの数を見つけようとしていることが表示されます:

あなたはかなり新しい(おそらくない身近なくらい regex)であることを述べたので、
import re 

new_town = re.sub("\s+", '', town) 

count = sum(i == "0" for i in new_town[::2]) 
+1

または単に 'sum(c == 0 new_town [:: 2]のc)' –

+0

@ juanpa.arrivillagaありがとうございます。私の最近の編集を見てください。 – Ajax1234

1

わかりました私は、現在のインスタンスのためにお勧めしますので、あなたが守らなければならないのpythonにあなたがAjax1234 @が提供する答えに従わなければならないことをお勧めしますがあなたのコードにあなたに変換しようとしている。コードにいくつかの修正を加える必要があるだけです(インデントに関連するものは非常に小さいですが)。修正されたコードは次のようになります。

def count_deaf_rats(town): 
    count = 0 
    increment = 0 
    newTown = town.replace(" ", "") 
    while increment <= len(newTown): 
     if newTown[increment]=='O': 
      count +=1 
     increment +=2 
return count 

#print count_deaf_rats("~O~O~O~OP~O~OO~") 

これは、対応するJavaコードと同じ結果になります。また以来whileループは考慮されていない多くのhandy(だけでなく、多くの有用ないくつかの事例で)Pythonでそれゆえ私はとしてforループを使用することを主張します:「here

1

私はドン

#Same as above 
for increment in range(0,len(newTown),2): 
    if newTown[increment] == 'O': 
     count +=1 
return count 

は、レンジ機能についての詳細を読みますtはあまりにも多くのJavaを知っているが、私は、これは、より直接的なパイソンにあなたのコードの翻訳であると考えている:私は@ Ajax1234の答えに同意

def countDeafRats(town): 
    count = 0 
    new_town = town.replace(' ','') 
#format for range: start, end (exclusive), increment 
    for i in range(0, len(new_town), 2): 
     if new_town[i] == '0': 
      count += 1 
    return count 

が、私はあなたが好きかもしれないと思いました2つのインクリメントを使用していることを示すforループを使用して、コードに近い例を示します。

関連する問題