[英]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.