Python字符串切片示例

2024-05-05 12:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经研究这个问题好几个小时了,但我似乎不明白。我的逻辑和这个很不一致

目标是根据问题要求的预期输出,确定单词“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)

如果有人回答这个问题,请向我解释你是如何得到答案的。提前谢谢


Tags: ofinnumber目标forlenrange逻辑
3条回答

你的答案很简单。你已经解决了一半的问题。在字符串上迭代3次。您需要知道的是,测试这些子字符串中是否有任何一个子字符串等于字符串"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
>>> 

请检查代码。你知道吗

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

下面的代码段使用regex库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')

相关问题 更多 >