ningdongdong 发表于 2022-3-2 23:20:24

第十八课课后作业看不明白

编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。
例如:假定输入的字符串为 “You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,子字符串为 “im”,函数执行后打印“子字母串在目标字符串中共出现 3 次”。

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)

-----
看不明白,请大佬解释一下每一句代码的含义

isdkz 发表于 2022-3-3 00:07:15

def findStr(desStr, subStr):      # 定义一个函数findStr,这个函数接受两个参数:desStr目标字符串、subStr子字符串
    count = 0                     # 用来计算出现次数的变量 count
    length = len(desStr)            # 目标字符串的长度 length
    if subStr not in desStr:      # 如果子字符串subStr不在目标字符串desStr中
      print('在目标字符串中未找到字符串!')# 输出 '在目标字符串中未找到字符串!'
    else:# 否则
      for each1 in range(length-1):   # 根据目标字符串的长度产生索引进行循环
            if desStr == subStr: # 如果目标字符串的第 each1 + 1 (因为索引是从0开始,所以加1)个字符等于 子字符串的第一个字符
                if desStr == subStr: # 如果目标字符串的第 each1 + 2 个字符等于 子字符串的第二个字符
                  count += 1         # 出现次数 加一
                  
      print('子字符串在目标字符串中共出现 %d 次' % count)# 打印子字符串在目标字符串出现的次数

desStr = input('请输入目标字符串:')    # 输入目标字符串
subStr = input('请输入子字符串(两个字符):')   # 输入子字符串
findStr(desStr, subStr)   # 调用findStr

大马强 发表于 2022-3-3 00:13:04


def findStr(desStr, subStr): #desStr->母串subStr->字串
    count = 0
    length = len(desStr) # 获取母串长度,限定查找范围i
    if subStr not in desStr:   # not in 第一步判断 字串 是否在 母串中出现 ; not in 语法不了解建议复习前面
      print('在目标字符串中未找到字符串!')
    else:
      for each1 in range(length-1):      # 前边 length 开始作用,限定查找范围 ,each1表示下标 从0开始 到 length-1
            if desStr == subStr: # !
                if desStr == subStr: # ! 这两句并不同用 只能在本题使用, 原理是一个个匹配,由于长度只有2,所以判断下标 0 1就好
                  count += 1
                  
      print('子字符串在目标字符串中共出现 %d 次' % count)

desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)

大马强 发表于 2022-3-3 00:26:54

这个应该是通用的
def findStr(desStr, subStr):# desStr->母串subStr->字串
    count = 0
    length = len(desStr)# 获取母串长度,限定查找范围i
    if subStr not in desStr:   # not in 第一步判断 字串 是否在 母串中出现 ; not in 语法不了解建议复习前面
      print('在目标字符串中未找到字符串!')
    else:
      # 前边 length 开始作用,限定查找范围 ,each1表示下标 从0开始 到 length-1
      for each1 in range(length-1):
            if desStr != subStr:# 第二个条件 位置和字串开头必须一样
                continue
            else:
                for each2 in range(len(subStr)):# 遍历字串和母串,遇到不一样就停下
                  # print(desStr, each1, each2, end=" ")
                  if desStr != subStr or each1+each2 > length:
                        break
                else:# 如果顺利执行完
                  count += 1
      print('子字符串在目标字符串中共出现 %d 次' % count)


desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)

jackz007 发表于 2022-3-3 01:19:27

本帖最后由 jackz007 于 2022-3-3 01:21 编辑

      看不明白,请大佬解释一下每一句代码的含义
      每一句都看不懂,敢问楼主,这是在使唤家奴吗???

ningdongdong 发表于 2022-3-3 23:30:54

jackz007 发表于 2022-3-3 01:19
每一句都看不懂,敢问楼主,这是在使唤家奴吗???

这么大火气??不懂就问,有啥问题?

ningdongdong 发表于 2022-3-3 23:37:01

大马强 发表于 2022-3-3 00:13


非常感谢
页: [1]
查看完整版本: 第十八课课后作业看不明白