Python 编写一个接受两个字符串参数的代码,并返回一个参数在另一个参数中被找到的次数的整数计数
我必须编写一个代码substrn,它接受字符串参数sup和sub,并返回sup中sub可能重叠的次数的整数计数 我写了这段代码Python 编写一个接受两个字符串参数的代码,并返回一个参数在另一个参数中被找到的次数的整数计数,python,function,loops,for-loop,Python,Function,Loops,For Loop,我必须编写一个代码substrn,它接受字符串参数sup和sub,并返回sup中sub可能重叠的次数的整数计数 我写了这段代码 def substrn(sup,sub): if sub in sup: x = 0 for i in sup: if sub in sup[sup.index(i):(int(len(sub))+int(sup.index(i)))]: x = x +1 return x e
def substrn(sup,sub):
if sub in sup:
x = 0
for i in sup:
if sub in sup[sup.index(i):(int(len(sub))+int(sup.index(i)))]:
x = x +1
return x
else:
return 0
print(substrn("wooloomooloo", "oo"))
print(substrn("wablabmablab", "ab"))
有人能帮我理解我的代码出了什么问题,以及我如何修改它吗?我的第一个打印语句生成了8个,但我的第二个打印语句生成了4个,它们应该是相同的 在这里试试这个:
def substrn(sup,sub):
# if sub in sup: # this is redundant since you are already checking
x = 0
for i in range(len(sup)):
if sub == sup[i:int(len(sub))+i]:
# try not to use a in b as this indicates partial search
# so to make your logic more explicit you use a == b
sup[i:int(len(sub))+i]
x = x +1
return x
print(substrn("wooloomooloo", "oo")) # prints 4
print(substrn("wablabmablab", "ab")) # prints 4
初始代码中的主要问题是sup:和sup.indexi中i的这一部分
对于sup中的i:迭代sup中的每个字母,sup.indexi将只找到sup中i索引的第一个匹配项。它不关心我来自哪里,只关心我是什么
如果您实际打印出sup.indexi,您会发现每个循环的sup.indexi始终为1,因此,当您执行substrnWoolOOOO时,oo将始终捕获第一个oo。因为您有8个操作系统,所以您的子对象将返回8
我希望这有助于: