第18讲:def findStr(desStr, subStr):
小甲鱼的代码是这样的def findStr(desStr, subStr):
count = 0
length = len(desStr)
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else:
for each1 in range(length-1):
if desStr == subStr:
if desStr == subStr:
count += 1
print('子字符串在目标字符串中共出现 %d 次' % count)
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
其中我对 length-1 的理解是这样的:length - n:n取决于子字符串的长度,若目标字符串的最后存在子字符串,需要确保能将子字符串完全展示出来
但我后来用查询发现理解是错的,可是我不知道问题出在哪,有哪位大佬能回答下吗?? ???字体颜色是怎么改的??? 这个程序只能用来测试子字符串是两个字符的情况
length-1是避免原字符串出现索引错误
逃兵 发表于 2021-3-9 16:16
这个程序只能用来测试子字符串是两个字符的情况
length-1是避免原字符串出现索引错误
这个我倒是清楚,但我如果做子字符串有n个的呢,后面的修改我清楚
...
if desStr == subStr[ (n-1) ]
我就想知道前面是不是还是 length - 1 孤妓与酒 发表于 2021-3-10 09:36
这个我倒是清楚,但我如果做子字符串有n个的呢,后面的修改我清楚
我就想知道前面是不是还是 length - ...
子字符串有多个
length-len(子字符串)+1 逃兵 发表于 2021-3-10 09:54
子字符串有多个
length-len(子字符串)+1
那就好,那我也算没理解错,就少了个+1,感想大佬{:10_282:} def findStr(desStr, subStr):
count = 0 #用于统计子字符串出现次数
flag = 0 #标记是否找到子字符串
length1 = len(desStr) #源字符串长度
length2 = len(subStr) #子字符串长度
if subStr not in desStr:#如果子字符串未出现在源字符串内,则输出“未找到”
print('在目标字符串中未找到字符串!')
else:
for each1 in range(length1-(length2-1)): #从源字符串的第一个字符位开始查找,
if desStr == subStr: #找到与子字符串第一符号匹配的位置
flag = 1 #标记为改为1
for i in range(1,length2):#开始判断子字符串第二个符号及后面是否匹配
if desStr != subStr:#不匹配则标志位重置为0,结束循环
flag = 0
break
if flag==1: #如果标志位依然为1,则计数+1
count += 1
print('子字符串在目标字符串中共出现 %d 次' % count)
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
atai0622 发表于 2021-3-10 10:28
大佬成功让我再一次大脑炸裂 length1-(length2-1) 是个什么意思??
如果我没理解错的话,当子字符串是2个的时候,可以直接是 length-1 ;如果子字符串是两个以上的,就比如是n个的话这个要怎么改??
而且这样改的话,好像对多子字符串太不要友好了,后面进行判断的额话就要加更多的东西,当然大佬这个逻辑更加严谨是没问题的 孤妓与酒 发表于 2021-3-10 10:39
大佬成功让我再一次大脑炸裂 length1-(length2-1) 是个什么意思??
如果我没理解错的话,当子字符串是2 ...
等等,按照这个逻辑来的话,n个子字符是 length1 - (n-1)?? 孤妓与酒 发表于 2021-3-10 10:41
等等,按照这个逻辑来的话,n个子字符是 length1 - (n-1)??
对的
因为如果length剩余的长度<子字符串的长度,那么后面就不用判断了,肯定是不包含的 atai0622 发表于 2021-3-10 10:43
因为如果length剩余的长度
嗯,也对,长度都不够也就不需要执行判断了,肯定是不可能包含的,我转牛角尖里了
页:
[1]