孤妓与酒 发表于 2021-3-9 16:08:04

第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取决于子字符串的长度,若目标字符串的最后存在子字符串,需要确保能将子字符串完全展示出来
但我后来用查询发现理解是错的,可是我不知道问题出在哪,有哪位大佬能回答下吗??

孤妓与酒 发表于 2021-3-9 16:08:42

???字体颜色是怎么改的???

逃兵 发表于 2021-3-9 16:16:11

这个程序只能用来测试子字符串是两个字符的情况

length-1是避免原字符串出现索引错误

孤妓与酒 发表于 2021-3-10 09:36:34

逃兵 发表于 2021-3-9 16:16
这个程序只能用来测试子字符串是两个字符的情况

length-1是避免原字符串出现索引错误

这个我倒是清楚,但我如果做子字符串有n个的呢,后面的修改我清楚
...
if desStr == subStr[ (n-1) ]
我就想知道前面是不是还是 length - 1

逃兵 发表于 2021-3-10 09:54:44

孤妓与酒 发表于 2021-3-10 09:36
这个我倒是清楚,但我如果做子字符串有n个的呢,后面的修改我清楚

我就想知道前面是不是还是 length - ...

子字符串有多个

length-len(子字符串)+1

孤妓与酒 发表于 2021-3-10 10:08:41

逃兵 发表于 2021-3-10 09:54
子字符串有多个

length-len(子字符串)+1

那就好,那我也算没理解错,就少了个+1,感想大佬{:10_282:}

atai0622 发表于 2021-3-10 10:28:48

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)

孤妓与酒 发表于 2021-3-10 10:39:30

atai0622 发表于 2021-3-10 10:28


大佬成功让我再一次大脑炸裂 length1-(length2-1) 是个什么意思??
如果我没理解错的话,当子字符串是2个的时候,可以直接是 length-1 ;如果子字符串是两个以上的,就比如是n个的话这个要怎么改??
而且这样改的话,好像对多子字符串太不要友好了,后面进行判断的额话就要加更多的东西,当然大佬这个逻辑更加严谨是没问题的

孤妓与酒 发表于 2021-3-10 10:41:00

孤妓与酒 发表于 2021-3-10 10:39
大佬成功让我再一次大脑炸裂 length1-(length2-1) 是个什么意思??
如果我没理解错的话,当子字符串是2 ...

等等,按照这个逻辑来的话,n个子字符是 length1 - (n-1)??

atai0622 发表于 2021-3-10 10:41:49

孤妓与酒 发表于 2021-3-10 10:41
等等,按照这个逻辑来的话,n个子字符是 length1 - (n-1)??

对的

atai0622 发表于 2021-3-10 10:43:04

因为如果length剩余的长度<子字符串的长度,那么后面就不用判断了,肯定是不包含的

孤妓与酒 发表于 2021-3-10 10:47:11

atai0622 发表于 2021-3-10 10:43
因为如果length剩余的长度

嗯,也对,长度都不够也就不需要执行判断了,肯定是不可能包含的,我转牛角尖里了
页: [1]
查看完整版本: 第18讲:def findStr(desStr, subStr):