鱼C论坛

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

[已解决]018的扩展问题,求解

[复制链接]
发表于 2017-3-29 17:33:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼的例子是查找2个字符,如果不限定查找字符的个数,2个,3个,4个。。。只要查找字符的个数n<length就行,这样要怎么写???一直没弄出来,求高手指点迷津!!

def findStr(desStr, subStr):  
        count = 0  
        length = len(desStr)  
        if subStr not in desStr:  
            print('在目标字符串中未找到字符串!')  
        else:  
            for each1 in range(length):        
                if desStr[each1] == subStr[0]:  
                    if desStr[each1+1] == subStr[1]:  
                        count += 1  

            print('子字符串在目标字符串中共出现 %d 次' % count)  

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

最佳答案
2017-3-29 17:54:28
小甲鱼这边只有两个,所以只要两次if就可以
for each1 in range(length):        
                if desStr[each1] == subStr[0]:  
                    if desStr[each1+1] == subStr[1]:  
                        count += 1

如果你需要多个,搞个循环,循环次数就是子字符串的长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-29 17:54:28 | 显示全部楼层    本楼为最佳答案   
小甲鱼这边只有两个,所以只要两次if就可以
for each1 in range(length):        
                if desStr[each1] == subStr[0]:  
                    if desStr[each1+1] == subStr[1]:  
                        count += 1

如果你需要多个,搞个循环,循环次数就是子字符串的长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 19:03:14 | 显示全部楼层
zlj19931010 发表于 2017-3-29 17:54
小甲鱼这边只有两个,所以只要两次if就可以
for each1 in range(length):        
                if de ...


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-29 19:04:18 | 显示全部楼层
zlj19931010 发表于 2017-3-29 17:54
小甲鱼这边只有两个,所以只要两次if就可以
for each1 in range(length):        
                if de ...

求详解!多谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-31 09:22:58 | 显示全部楼层
  1. def findStr(desStr, subStr):  
  2.     count = 0  
  3.     length = len(desStr)  
  4.     if subStr not in desStr:  
  5.         print('在目标字符串中未找到字符串!')  
  6.     else:  
  7.         for each1 in range(length):
  8.             if desStr[each1] == subStr[0]:
  9.                 for i in range(len(subStr)):
  10.                     if desStr[each1+i] == subStr[i]:
  11.                         if i == len(subStr)-1:
  12.                             count += 1
  13.                             break
  14.                         else:
  15.                             continue
  16.                     else:
  17.                         break
  18.                         
  19.             

  20.         print('子字符串在目标字符串中共出现 %d 次' % count)  

  21. desStr = input('请输入目标字符串:')
  22. subStr = input('请输入子字符串(两个字符):')
  23. findStr(desStr, subStr)
复制代码

按二楼想法帮你弄出来的,不过这个还有小问题,留给你思考下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-1 17:56:29 | 显示全部楼层
lumber2388779 发表于 2017-3-31 09:22
按二楼想法帮你弄出来的,不过这个还有小问题,留给你思考下

非常感谢!!虽然还没完全看懂:)
if i == len(subStr)-1  这句是什么意思?

我试着用while来写第二个循环,只有2个字符的算得对
def findStr(allStr,subStr):
    count=0
    length=len(allStr)
    length2=len(subStr)
    while subStr not in allStr:
        subStr=input('not found,plz enter again:')
    else:
        for each in range(0,length-1):
            if subStr[0]==allStr[each]:
                for i in range(length2-1):
                    while i !=length2-1:
                        if subStr==allStr[each+i]:
                            count+=1
                            break


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 18:11:10 | 显示全部楼层
if i == len(subStr)-1 计算当前是不是已经是subStr字符串最后一个元素
因为数组从0开始最大索引值就是len(subStr)-1 长度就是len(subStr)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 19:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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