这是我编写的代码,用于查找“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。
答案 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)