这段Python代码与Java代码等价吗?

这段Python代码与Java代码等价吗?,java,python,Java,Python,我是Python的新手,所以请容忍我 这是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的新手,所以请容忍我

这是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;
}
public static int countDeafRats(最终字符串){
字符串t=town.replaceAll(“,”);
整数计数=0;
对于(int i=0;i
这是我将其转换为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
def count_duan_rats(城镇):
计数=0
增量=0
newTown=town.replace(“,”)

当递增时,似乎您正在尝试查找索引递增2处出现的字符串中的零数。您可以在Python中使用正则表达式和列表理解:

import re

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

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

似乎您正在尝试查找索引增加2时出现的字符串中的零数。您可以在Python中使用正则表达式和列表理解:

import re

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

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

好的,我建议您必须遵循@Ajax1234提供的答案,但由于您提到您对python相当陌生(可能对
regex
不太熟悉),因此我建议对于当前实例,您应该坚持使用您尝试转换的代码。这是相当正确的,只是您需要对代码进行一些修改(尽管与缩进相关的修改非常小)。修改后的代码如下所示:

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~")

阅读有关范围函数的更多信息

好的,我建议您必须遵循@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了解不多,但我相信这是将您的代码更直接地翻译成python:

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的用法。希望这有帮助

我对Java了解不多,但我相信这是将您的代码更直接地翻译成python:

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的用法。希望这有帮助

缩进是错误的。def
def
下面的所有内容都应该缩进到右侧。您可以显示一个示例输入和预期输出吗?与其说是直接的翻译,还不如说有一种类似于蟒蛇的自然翻译方法<对于范围(0,newTown,2)中的i,code>:
在Python中永远不会使用
while
循环,但只要看一眼,它看起来是等效的。如果块缩进错误,
增量+=2
不应该在。def
def
下面的所有内容都应该缩进到右侧。您可以显示一个示例输入和预期输出吗?与其说是直接的翻译,还不如说有一种类似于蟒蛇的自然翻译方法<对于范围(0,newTown,2)中的i,code>:
你永远不会在Python中使用
while
循环,但只要看一眼,它看起来是等效的。
增量+=2
不应该在if块内,也不应该是
求和(c=“0”,在Newu town[:2])
@juanpa.arrivillaga谢谢你的建议。请查看我最近的编辑。或者只查看
sum(c==“0”代表新市镇的c[::2])
@juanpa.arrivillaga谢谢你的建议。请看我最近的编辑。