这个Python代码是否等同于Java代码?

问题描述:

我对Python很新,所以请耐心等待。这个Python代码是否等同于Java代码?

这是Java代码:

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:

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 

我没有for循环在Python,因为我没怎么用如题目所示,增加2,这是否可以接受?

编辑,样本输入:~O~O~O~OP~O~OO~

+2

缩进是错误的。 'def'下面的所有内容应该缩进到右边 – Alfabravo

+1

您能否显示示例输入和您的预期输出?不是直译,而是自然而然地采用pythonic方式来做到这一点。 – CoryKramer

+2

查看https://docs.python.org/2/library/functions.html#range for increment by 2 ...'为我在范围内(0,newTown,2):' – bphi

看来,你正在努力寻找零字符串中发生在由2.您可以在Python中使用正则表达式和列表内涵增加指数数量:

import re 

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

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

或者只是'sum_(new_town [:: 2]中c的总和(c ==“0”)) –

+0

@ juanpa.arrivillaga谢谢您的建议。请参阅我最近的编辑。 – Ajax1234

好吧,我会建议你必须遵循@ Ajax1234提供的答案,但既然你提到你是相当新的(可能不熟悉很多关于regex)到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 

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

这产生与您相应的java代码相同的结果。此外,由于while循环不考虑太多handy(但也很多有用的某些情况下)在python所以我会坚持使用for环路:

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

了解更多范围的功能here

我不知道太多的Java,但我相信这是一个更直接翻译你的代码为蟒蛇:

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 

我@ Ajax1234的答案达成一致,但我认为你可能会喜欢一个看起来更接近你的代码的例子,使用for循环来演示使用2的增量。希望这有助于!