Python新手求助:用循环统计字符串中'bob'出现次数
解决Python中统计'bob'出现次数的问题
嘿,我来帮你搞定这个问题!作为Python新手,遇到这类循环统计的问题很正常,咱们先看看你代码里的问题,再一步步修正。
你的代码存在的问题
你的思路是想用find来找'bob',但有两个关键问题:
strings = s.find(string)只执行了一次,只会得到第一次出现'bob'的位置,之后循环里没有更新这个位置,导致只要第一次找到了,循环遍历每个字符时就会一直累加count,结果完全不对。for i in s是逐个遍历字符,但这样没法检查连续三个字符的组合,完全没利用到find返回的位置信息。
方法一:用while循环实现
我们可以通过不断更新查找的起始位置,来逐个找到所有'bob':
count = 0 start = 0 s = 'azcbobobegghakl' # 可替换为任意目标字符串 while True: # 从start位置开始查找'bob' pos = s.find('bob', start) if pos == -1: # 找不到就退出循环 break count += 1 # 把起始位置移到当前找到的位置+1,避免重复计数,同时能找到重叠的情况(比如'bobob'里的两个'bob') start = pos + 1 print(f"Number of times bob occurs is: {count}")
方法二:用for循环实现
如果想用for循环,我们可以遍历字符串的索引,每次检查从当前索引开始的三个字符是否是'bob':
count = 0 s = 'azcbobobegghakl' # 遍历到倒数第三个字符即可,因为要取i到i+2的三个字符 for i in range(len(s) - 2): if s[i:i+3] == 'bob': count += 1 print(f"Number of times bob occurs is: {count}")
这两种方法都能正确统计出'bob'的出现次数,比如你给的例子s = 'azcbobobegghakl',两种方法都会输出Number of times bob occurs is: 2,完全符合题目要求。
内容的提问来源于stack exchange,提问作者user4219935
相关产品推荐
相关产品推荐

