W1ND123 发表于 2021-9-21 10:08:34

关于课后作业第十八讲

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这个是什么意思呢???
希望解答,十分感谢!!!!

小圣呀 发表于 2021-9-21 10:27:40

因为要查找的是两个字符的子字符串,比如长度为5,只需要查看目标字符串的前四个就够了,最后一个不影响结果。

W1ND123 发表于 2021-9-21 10:46:00

小圣呀 发表于 2021-9-21 10:27
因为要查找的是两个字符的子字符串,比如长度为5,只需要查看目标字符串的前四个就够了,最后一个不影响结 ...

谢谢 明白了 !!!1

W1ND123 发表于 2021-9-21 12:43:45

小圣呀 发表于 2021-9-21 10:27
因为要查找的是两个字符的子字符串,比如长度为5,只需要查看目标字符串的前四个就够了,最后一个不影响结 ...

我想了一下 ,如果目标字符串是4,那减去1,就剩下3了,比如,目标字符串:imim 子字符串:im,这样的话,不就错了吗

小圣呀 发表于 2021-9-21 16:42:57

W1ND123 发表于 2021-9-21 12:43
我想了一下 ,如果目标字符串是4,那减去1,就剩下3了,比如,目标字符串:imim 子字符串:im,这样的话,不 ...

没问题的。for循环下有两个if条件,第一个if能够识别当前位置字符是否与子字符串的第一个字符i相同,然后再if判断紧接着的下一个位置字符是否是m,比如第一次,目标字符串需要判断的是im,第二次mi,第三次im,对应的子字符判别,就是三次循环中有两次符合。总之,判断跨度是2个字符,所以目标字符只需索引至倒数第二个。
页: [1]
查看完整版本: 关于课后作业第十八讲