寻找字符串的改进
python课后练习,第18讲,动动手的第二题要求是输入长度为2的子字符串查找,我想把它改成无论输入的子字符串长度为多少都可以查找,但无论输入什么count都等于0,新手入门很多还不太懂,求大佬解答def findstr(s,t):
la=len(t)
le=len(s)-l
z=''
count=0
for each in range(0,le-la):
for every in s:
z=z+every
if z==t:
count+=1
print('字符串在目标字符串中共出现%d次'%count)
s=input('请输入目标字符串:')
t=input('请输入子字符串:')
findstr(s,t)
le=len(s1)-l
NameError: name 'l' is not defined
这是你报错的根源。是1并不是L。
能理解的话,整个代码这样会更严谨一些:
def findstr(s1,t):
la=len(t)
le=len(s1)-1
count=0
index = 0
while index <= le-la :
z=''
for every in s1:
z=z+every
if z==t:
count +=1
index +=la
else:
index +=1
print('字符串在目标字符串中共出现%d次'%count) 第7行,改成each:each+la+1 本帖最后由 sunrise085 于 2020-4-29 09:21 编辑
两处错误,
第三行不应该减一
for循环内,每次循环时z应该清空
def findstr(s,t):
la=len(t)
le=len(s)
count=0
for each in range(0,le-la):
z=''
for every in s:
z=z+every
if z==t:
count+=1
print('字符串在目标字符串中共出现%d次'%count)
s=input('请输入目标字符串:')
t=input('请输入子字符串:')
findstr(s,t)
BngThea 发表于 2020-4-29 08:36
第7行,改成each:each+la+1
谢谢啦,已经解决了 sunrise085 发表于 2020-4-29 09:20
两处错误,
第三行不应该减一
for循环内,每次循环时z应该清空
谢谢啦,已经解决了 773254968 发表于 2020-4-29 10:51
哇这个太棒了,试了很多都是对的,谢谢大佬 cRicardo 发表于 2020-4-29 11:01
哇这个太棒了,试了很多都是对的,谢谢大佬
四楼程序是有问题的
若s字符串是abcabababc,t字符串是abab,结果应该是几次?1次还是两次?
他的程序没考虑子串自身有重复的问题
若满意请给个最佳。谢谢~
页:
[1]