我对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~
答案 0 :(得分:4)
您似乎正在尝试查找字符串中出现在索引处增加2处的零的数量。您可以在Python中使用正则表达式和列表推导:
import re
new_town = re.sub("\s+", '', town)
count = sum(i == "0" for i in new_town[::2])
答案 1 :(得分:1)
好的我建议你必须按照 @ 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代码相同的结果。此外,由于while
循环在python中不被认为handy(但在某些情况下也非常有用),因此我将坚持使用for
循环:
#Same as above
for increment in range(0,len(newTown),2):
if newTown[increment] == 'O':
count +=1
return count
详细了解范围函数here
答案 2 :(得分:1)
我不太了解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.希望这有帮助!