这个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.您可以在Python中使用正则表达式和列表内涵增加指数数量:
import re
new_town = re.sub("\s+", '', town)
count = sum(i == "0" for i in new_town[::2])
或者只是'sum_(new_town [:: 2]中c的总和(c ==“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的增量。希望这有助于!
缩进是错误的。 'def'下面的所有内容应该缩进到右边 – Alfabravo
您能否显示示例输入和您的预期输出?不是直译,而是自然而然地采用pythonic方式来做到这一点。 – CoryKramer
查看https://docs.python.org/2/library/functions.html#range for increment by 2 ...'为我在范围内(0,newTown,2):' – bphi