打印字符串出现次数的程序(Python)

时间:2017-10-04 09:02:20

标签: python python-3.x

这是我编写的代码,用于查找“bob”一词在单词中重复的次数。

word= 'azcbobobegghakl'

count =0

num=0

for nxt in word:

    count += 1

    if nxt =="b":

        bb= word[count-1:]

        num += bb.count("bob")

    else:

        break

print("number=" + str(num))

每次都给我数= 0。

3 个答案:

答案 0 :(得分:0)

考虑如果nxt不是b会发生什么。否则会打破这个循环。这意味着现在你只检查单词本身以b开头。

同样使用count(),你将多次计算相同的子字符串。

答案 1 :(得分:0)

发生的事情是:
你检查nxt是否等于" b",第一个字母是" a"的情况不是这样。

因此它执行else部分立即制动循环并继续print语句,该语句打印0,因为它永远不会越过第一个字符。

只需删除else部分即可解决此问题

word= 'azcbobobegghakl'
count =0
num=0

for nxt in word:

    count += 1

    if nxt =="b":
        bb= word[count-1:]
        num += bb.count("bob")

print("number=" + str(num))

输出:number=2

答案 2 :(得分:0)

我认为您可能会在继续中断之间感到困惑。没有必要使用休息,即使你可以放弃整个其他部分。但是如果你不想丢弃它,那么使用 continue 代替 break

break :从循环中断并执行循环语句之后写的语句(即循环外的语句)

继续:继续使编译器/解释器跳过在continue语句之后写入的整段代码(在循环内)并转到下一次迭代(简单来说,转到下一个索引)列表)。

word= 'azcbobobegghakl'

count =0

num=0

for nxt in word:

    count += 1

    if nxt =="b":

        bb= word[count-1:]

        num += bb.count("bob")

    else:
        continue

print("number=" + str(num))

您还可以将正则表达式库方法用作:

import re

word= 'azcbobobegghakl'
count = 0
pattern_to_match = 'bob'

for match in re.findall(pattern_to_match,word):
    count +=1

print("Match Count : %s" % count)