繁体   English   中英

该Python代码是否等效于Java代码?

[英]Is this Python code equivalent of Java code?

我是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:

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

我没有在Python中使用for循环,因为我不怎么增加2,所以正如标题所说,这是可以接受的翻译吗?

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

似乎您正在尝试查找索引加2时出现的字符串中的零数。您可以在Python中使用regex和list comprehensions:

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

这将产生与您相应的Java代码相同的结果。 另外,由于在Python中while循环不被认为很方便 (但在某些情况下也很有用),所以我将坚持使用for循环:

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

在此处阅读有关范围功能的更多信息

我不太了解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的增量。希望这对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM