老司机。。 发表于 2020-8-4 15:34:00

零基础学Python课后作业最后一个题

原题是:编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,子字符串为“im”,函数执行后打印“子字母串在目标字符串中共出现 3 次”。
我开始自己写的代码是这样的,我的思路是直接把x切片为2长度的片从头开始与y比较:
def f3():
        sum=0
        x=input('请输入目标字符串:')
        y=input('请输入子字符串:')
        for i in range(0,len(x)-1):
                if y==x:
                        sum=sum+1
        return sum
然后运行出来,结果是错误的
>>> f3()
请输入目标字符串:you cannot improve your past,but you can improve your future.once time is wasted,life is wasted.
请输入子字符串:im
0
然后看到答案后,发现是直接直接一个一个比较两个序列中的值,但是如果要是没有题目要求的是长度为2的字符串,如果更多的话这个方法不就不太方便了吗。{:9_241:}
想请问下大佬我的代码是哪里有问题呢{:9_219:} {:9_219:}

zltzlt 发表于 2020-8-4 15:38:13

这样试试:

def f3():
      sum=0
      x=input('请输入目标字符串:')
      y=input('请输入子字符串:')
      for i in range(0,len(x)-1):
                if y==x:    # 修改
                        sum=sum+1
      return sum

老司机。。 发表于 2020-8-4 15:47:33

zltzlt 发表于 2020-8-4 15:38
这样试试:

{:10_266:}{:10_266:}我知道我错在哪了,切片最后一个是不加进去的,所以我从x中只切了一个出来{:10_284:}

zltzlt 发表于 2020-8-4 15:47:56

老司机。。 发表于 2020-8-4 15:47
我知道我错在哪了,切片最后一个是不加进去的,所以我从x中只切了一个出来{:10_284: ...

对,哈哈

zltzlt 发表于 2020-8-4 15:49:36

老司机。。 发表于 2020-8-4 15:47
我知道我错在哪了,切片最后一个是不加进去的,所以我从x中只切了一个出来{:10_284: ...

问题解决了就设置下最佳答案呗~{:10_297:}

老司机。。 发表于 2020-8-4 15:52:05

zltzlt 发表于 2020-8-4 15:49
问题解决了就设置下最佳答案呗~

可以可以{:5_109:}
页: [1]
查看完整版本: 零基础学Python课后作业最后一个题