我想编写这段代码来计算给定字符串中'bob'的数量。这就是为什么我希望能够一次扫描三个字符的字符串,但是当我这样做时代码不回报权利 '鲍勃'的数量。请帮忙,我的代码在下面。
# This function does not work correctly yet
# This function counts the number of bobs in a string
def bobs_counter():
bob_count = 0
s = 'waterbob'
s_len = len(s)
bob_counter = "bob"
for q in range(0, s_len+1, 3):
if bob_counter in s:
bob_count += 1
else:
break
print(bob_count)
bobs_counter()
答案 0 :(得分:0)
您只需使用'waterbob'.count('bob')
。
'waterbob'.count('bob') # 1
'bobwaterbob'.count('bob') # 2
答案 1 :(得分:0)
对于非重叠,您可以使用@ BubbleBubbleBubbleGut的建议。
否则,您希望一次一步地遍历字符串,但每次比较3个字符。
s = 'waterbobob'
match = 'bob'
match_count = 0
for i in range(0, len(s) + 1 - len(match)):
# this start the matching from the beginning to the last segment at the match length
if s[i:i+len(match)] == match:
# slice the string at the index + match length, giving you a segment of the exact length of the match to compare.
match_count += 1
# match_count = 2
根据您的初始定义,这适用于任何s
和match
。这当然是区分大小写的。如果您需要非区分大小写的版本,请考虑在比较之前将所有内容转换为大写/小写。