我已经在这个问题上工作了好几个小时了,我似乎无法得到它。我的逻辑是这样的
目的是根据问题所要求的预期输出来确定单词“bob”出现的次数= 2。
我只是不知道如何到达那里。我得到了:
s = 'azcbobobegghakl'
bob = 0
for i in range(len(s)):
print(s[i: i+3])
print("Number of times bob occurs is: ", bob)
如果有人回答这个问题,请向我解释你是如何得到答案的。提前致谢
答案 0 :(得分:0)
请检查代码。
s = 'azcbobobegghakl'
bob = 0
for i in range(len(s)):
print(s[i: i+3])
if s[i: i+3] == "bob":
bob += 1
print("Number of times bob occurs is: ", bob)
输出是,
azc
zcb
cbo
bob
obo
bob
obe
beg
egg
ggh
gha
hak
akl
kl
l
Number of times bob occurs is: 2
答案 1 :(得分:0)
以下代码段使用正则表达式库re
来查找非重叠的子字符串,并返回作为列表找到的所有实例。列表的len()
是出现次数。
import re
number_of_bob = len(re.findall("bob", "azcbobobegghakl"))
此方法不适用于重叠模式。要在一行中查找重叠子串的数量:
number_of_bob = sum(1 for i in range(len(s)-2) if s[i:i+3] == 'bob')
答案 2 :(得分:0)
你的回答非常简单。你已经解决了一半的问题。你三次迭代你的字符串。您需要知道的是测试这些子串中的任何一个是否等于字符串"bob"
。如果是,请将bob
计数器增加1
:
>>> s = 'azcbobobegghakl'
>>> bob = 0
>>>
>>> for i in range(len(s)):
substr = s[i: i + 3]
# is the current three letter substring equal to "bob"?
if substr == 'bob':
# if so, increment the counter by one.
bob += 1
>>> bob
2
>>>