《零基础入门python》中习题的疑问
小甲鱼在18讲的作业中写了一个函数来求目标字符串中的子字符串出现的次数,但是只能求两个字符,我想把它拓展成任何长度的,但是挣扎到这里后,不知道该怎么办,运行时会出现line 13, in findstr
if desStr == subStr:
IndexError: string index out of range
这样的错误提示
下面是源代码
def findstr(desStr,subStr):
'这个函数用来查找子字符串在字符串中出现的次数。'
count = 0
length1 = len(desStr)
length2 = len(subStr)
length3 = 0
if subStr not in desStr:
print('在目标字符串中未找到字符串')
else:
for each1 in range(length1 - 1):
if desStr == subStr:
while length3 < length2:
if desStr == subStr:
length3 += 1
count += 1
else:
break
print("子字符串在目标字符中共出现",count/length2,"次")
return count
desStr = input("请输入目标字符串:")
subStr = input("请输入子字符串:")
findstr(desStr,subStr)
求各位大神赐教 感觉你这个查找的算法有问题:
0).通过算出重复的字符有多少个然后除以subStr长度,但是在计算重复字符数时有重复计算,老师代码里有了两个if嵌套,保证两个字符都相同才+1的;
1).报错时溢出字符长度,老师代码+1是比较接下来的字符,应该等价于这里的length3,并且在跳出while时length3没有初始化为0;
2).然后range()函数里应该是range(length1 - length2)
也是刚学python,这是个人的一点看法,希望能够交流下
页:
[1]