s = "bobobobobobsdfsdfbob"
count = 0
for x in s :
if x == "bob" :
count += 1
print count
我想计算字符串s中有多少个bob,结果如果这给了我17 我的代码有什么问题我是新手python。
答案 0 :(得分:3)
当您在字符串中循环时,一次性变量将保留字符,因此在您的循环中x
永远不会与bob
相等。
如果您想计算非重叠字符串,可以使用str.count
:
In [52]: s.count('bob')
Out[52]: 4
对于重叠的子字符串,您可以在regex中使用lookaround:
In [57]: import re
In [59]: len(re.findall(r'(?=bob)', s))
Out[59]: 6
答案 1 :(得分:0)
你可以使用string.count
例如:
subscribe
答案 2 :(得分:0)
我没有提供最佳解决方案,只是尝试更正您的代码。
了解for each (a.k.a range for)
在案例中的作用
for c in "Hello":
print c
输出:
H
e
l
l
o
在每次迭代中,您将字符与字符串进行比较,从而导致错误的答案 试试类似的东西 (没有重叠,即没有跨度)
s = "bobobobobobsdfsdfbob"
w = "bob"
count = 0
i = 0
while i <= len(s) - len(w):
if s[i:i+len(w)] == w:
count += 1
i += len(w)
else:
i += 1
print (count)
输出:
Count = 4
重叠
s = "bobobobobobsdfsdfbob"
w = "bob"
count = 0
for i in range(len(s) - len(w) + 1):
if s[i:i+len(w)] == w:
count += 1
print (count)
输出:
Count = 6