编写一个程序,打印字符串包含子字符串的次数

时间:2016-09-11 12:16:44

标签: python python-2.7 python-3.x

s = "bobobobobobsdfsdfbob"
count = 0 
for x in s : 
    if x == "bob" : 
       count += 1
print count

我想计算字符串s中有多少个bob,结果如果这给了我17 我的代码有什么问题我是新手python。

3 个答案:

答案 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