鱼C论坛

 找回密码
 立即注册
查看: 2995|回复: 6

python18讲课后题

[复制链接]
发表于 2016-11-19 20:58:21 | 显示全部楼层 |阅读模式
1鱼币
def findStr(desStr, subStr):
    count = 0
    length = len(desStr)
    if subStr not in desStr:
        print('在目标字符串中未找到字符串!')
    else:
        for each1 in range(length-1):      
            if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
                    count += 1
                    
        print('子字符串在目标字符串中共出现 %d 次' % count)

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

请大神帮我解释下解释下,
if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
这2句是什么意思
整段代码的运行顺序是什么

最佳答案

查看完整内容

原题是:定义一个函数,寻找一个长度为2的字符串在另外一个字符串中出现的次数。 def findStr(desStr, subStr): # 定义这个函数,两个参数,subStr为长度2字符串,desStr为待查字符串 count = 0 # count 表示字符串出现的次数,变量,需要提前定义才能使用,初始值为0 length = len(desStr) # 求出字符串desStr长度 if subStr not in desStr: #条件语句,如果字符串subStr不在字符串desStr内部,用了not i ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-19 20:58:22 | 显示全部楼层
本帖最后由 人zai旅途 于 2016-11-20 17:34 编辑

原题是:定义一个函数,寻找一个长度为2的字符串在另外一个字符串中出现的次数。
def findStr(desStr, subStr):   # 定义这个函数,两个参数,subStr为长度2字符串,desStr为待查字符串
    count = 0    # count 表示字符串出现的次数,变量,需要提前定义才能使用,初始值为0
    length = len(desStr)  # 求出字符串desStr长度
    if subStr not in desStr:  #条件语句,如果字符串subStr不在字符串desStr内部,用了not in字符串方法
        print('在目标字符串中未找到字符串!') # 打印结果,字符串未出现
    else:  # 除了上面不出现的情况,其他情况都需要下面的方法来走
        for each1 in range(length-1):      # for..in..for循环,range(length-1)表示一个长度(length-1)的序列,each1表示这个序列中的每一个元素,在下面代码中,用来表示字符串下标
            if desStr[each1] == subStr[0]: # 因为是在for循环下,each1表示下标,所以desStr[each1]表示字符串desStr的每一个字符,subStr[0]表示字符串subStr第一个字符;整句意思是如果desStr有与subStr第一个字符相同的字符;
                if desStr[each1+1] == subStr[1]: #在出现了一个字符相同的情况下,从desStr的each1+1个字符开始继续判断,后面的字符是否有与subStr第二个字符(也就是subStr[1])相等的字符
                    count += 1 # 两个字符都相同,表示符合条件,统计一次count,给count+1
                    
        print('子字符串在目标字符串中共出现 %d 次' % count) # 打印字符串出现的次数count最终的值

desStr = input('请输入目标字符串:') # 输入待查字符串
subStr = input('请输入子字符串(两个字符):')# 输入长度2字符串
findStr(desStr, subStr) #调用函数


一般来讲,此类问题都会走这个套路:
①求得字符串的长度
②用for循环和range()创建的序列的每一个元素来表示下标
③用字符串【下标】的方法来定位或者遍历每一个字符
④根据需要进行字符的比对或者拼接,实现最终的目的


用心解答,希望给最佳答案!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-19 23:59:44 | 显示全部楼层
each1为索引,分别判断subStr的第一个和第二个字母是否与each1索引位置字母以及each1+1索引位置字母相等
同时成立的话计数器count+1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-20 07:55:10 | 显示全部楼层
这是在目标字符串中寻找子字符串的程序
if desStr[each1] == subStr[0]:
         if desStr[each1+1] == subStr[1]:
是目标字符串的第each1-1个元素和子字符串的第一个元素相同,并且目标字符串的第each个元素和子字符串的第二个元素相同,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-20 22:25:41 | 显示全部楼层
  1. if desStr[each1] == subStr[0]:   #判断目标字符串的第一个字符和子字符串的第一个字符是否相同
  2.      if desStr[each1+1] == subStr[1]:
复制代码
# 一前一个字符为基础判断第二个字符是否相等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-20 23:07:27 | 显示全部楼层
围观
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-20 16:16:34 | 显示全部楼层
人zai旅途 发表于 2016-11-19 20:58
原题是:定义一个函数,寻找一个长度为2的字符串在另外一个字符串中出现的次数。
def findStr(desStr, sub ...

受教了。好详细!
感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-24 01:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表