鱼C论坛

 找回密码
 立即注册
查看: 1201|回复: 2

[已解决]关于第18讲后面最后一题的问题

[复制链接]
发表于 2018-6-27 17:35:38 | 显示全部楼层 |阅读模式

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

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

x
编写一个函数findstr(),该函数统计一个长度为2的字符串出现的次数,如果输入的字符串为:
XXXXXX00XXXXXX,子字符串为00,则返会的结果为1,意思就是这样
首先上我自己的代码:
def findstr():
    longstr = input("请输入目标字符串")
    target = input("请输入子字符串")
    count = 0
    var = 0
    for var in len(longstr):
        if longstr[var:var+1]==target:            
            count+=1
        var+=1
    print('出现次数:'+ count)    
 
findstr()
我不明白是为什么我的这个输出一直都是0,字符串判断是否相等的话用==也是可以的啊,如果问题不在这里,那么问题应该是出在哪里呢?
看了一下答案,答案的话自己是完全可以看懂的
最佳答案
2018-6-27 18:07:30
首先你这个代码错误很多,迭代器没有使用range(),输出的时候+了一个int 这些都是错误,还有最好吧len()提前计算出来,如果len在迭代器中每次都会执行一边这个函数,代码的运行时长会加大
def findstr():
    longstr = input("请输入目标字符串")
    target = input("请输入子字符串")
    count = 0
    lenght = len(longstr)
    for var in range(lenght-1):
        if longstr[var:var+2]==target:            
            count+=1
    print('出现次数:',count)
这是我在你的基础上修改的,你可以回去再看一看切片的问题,举例切片的时候【1:2】,这里索引值为2的并不会在切片结果中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-27 18:07:30 | 显示全部楼层    本楼为最佳答案   
首先你这个代码错误很多,迭代器没有使用range(),输出的时候+了一个int 这些都是错误,还有最好吧len()提前计算出来,如果len在迭代器中每次都会执行一边这个函数,代码的运行时长会加大
def findstr():
    longstr = input("请输入目标字符串")
    target = input("请输入子字符串")
    count = 0
    lenght = len(longstr)
    for var in range(lenght-1):
        if longstr[var:var+2]==target:            
            count+=1
    print('出现次数:',count)
这是我在你的基础上修改的,你可以回去再看一看切片的问题,举例切片的时候【1:2】,这里索引值为2的并不会在切片结果中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-28 09:18:01 | 显示全部楼层
回眸情依旧 发表于 2018-6-27 18:07
首先你这个代码错误很多,迭代器没有使用range(),输出的时候+了一个int 这些都是错误,还有最好吧len( ...

老铁666
多谢指正
看来要回去看一看之前的课程了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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