牛牛pp 发表于 2019-11-8 15:25:49

请问我这段代码是哪里出了问题(零基础学python018讲,第2题)

本帖最后由 牛牛pp 于 2019-11-8 15:29 编辑

def findstr(x,y):
    x = input ('请输入目标字符串:')
    y = input ('请输入子字符串(两个字符):')
    n = len(x)
    a = 0
    b = 2
    count = 0
   
    while b <= n:
       singal = x.find(y,a,b)
       if singal != -1:
         count += 1
      a += 1
      b += 1
         
    return count

发不了图片....

冬雪雪冬 发表于 2019-11-8 15:39:07

def findstr():
    x = input ('请输入目标字符串:')
    y = input ('请输入子字符串(两个字符):')
    n = len(x)
    a = 0
    b = 2
    count = 0
   
    while b <= n:
      singal = x.find(y,a,b)
      if singal != -1:
            count += 1
      a += 1
      b += 1
         
    return count

ba21 发表于 2019-11-8 15:39:16

对齐
def findstr(x,y):
    x = input ('请输入目标字符串:')
    y = input ('请输入子字符串(两个字符):')
    n = len(x)
    a = 0
    b = 2
    count = 0
   
    while b <= n:
      singal = x.find(y,a,b)
      if singal != -1:
            count += 1
      a += 1
      b += 1
         
    return count

jackz007 发表于 2019-11-8 15:43:22

本帖最后由 jackz007 于 2019-11-8 16:06 编辑

       singal = x.find(y,a,b)   
      这一句,find() 方法为什么要指定 b 选项,每次在 2 个字符中寻找,find() 方法的优势根本得不到充分发挥,如果是这样的话,你完全可以不用 find() 方法,直接按 2 个字符从头到尾循环比较就可以了。

      下面是我写的代码,楼主可以参考一下:
def findstr(x , y):
    a , count = 0 , 0
    while a >= 0 and a <= len(x) - len(y) :
      a = x . find(y , a)
      if a != -1:
            count += 1
            a += len(y)
    return count

x = input ('请输入目标字符串:') . strip()
y = input ('请输入子字符串(两个字符):') . strip()
print(findstr(x , y))
print(x . count(y))

永恒的蓝色梦想 发表于 2019-11-8 16:20:34

jackz007 发表于 2019-11-8 15:43
这一句,find() 方法为什么要指定 b 选项,每次在 2 个字符中寻找,find() 方法的优势根本得不到充 ...

你直接def findStr(a,b):
        for i in range(len(a)-len(b)):
                if a==b:
                        return i
        else:
                return -1岂不是更好……

WXF666 发表于 2019-11-8 20:25:37

除了缩进应该没啥问题,但是太复杂了,没必要find

zltzlt 发表于 2019-11-8 20:35:26

本帖最后由 zltzlt 于 2019-11-8 20:36 编辑

缩进错误:

def findstr(x,y):
    x = input ('请输入目标字符串:')
    y = input ('请输入子字符串(两个字符):')
    n = len(x)
    a = 0
    b = 2
    count = 0
   
    while b <= n:
       singal = x.find(y,a,b)
       if singal != -1:
          count += 1
      a += 1
      b += 1
         
    return count

正确代码:

def findstr():
    x = input ('请输入目标字符串:')
    y = input ('请输入子字符串(两个字符):')
    n = len(x)
    a = 0
    b = 2
    count = 0
   
    while b <= n:
      singal = x.find(y,a,b)
      if singal != -1:
            count += 1
      a += 1
      b += 1
         
    return count

zltzlt 发表于 2019-11-10 16:27:02

本帖最后由 zltzlt 于 2019-11-10 17:41 编辑

请删除

牛牛pp 发表于 2019-11-10 17:38:51

zltzlt 发表于 2019-11-8 20:35
缩进错误:

def findstr(x,y):


确实,一不小心就错了。

牛牛pp 发表于 2019-11-10 17:46:26

本帖最后由 牛牛pp 于 2019-11-10 17:50 编辑

jackz007 发表于 2019-11-8 15:43
这一句,find() 方法为什么要指定 b 选项,每次在 2 个字符中寻找,find() 方法的优势根本得不到充 ...

思维还没有转变过来,总觉得,要去“找”东西,就想到find(),楼下的那位兄弟的方法挺简洁。

牛牛pp 发表于 2019-11-10 17:50:40

永恒的蓝色梦想 发表于 2019-11-8 16:20
你直接岂不是更好……

多谢指导,没想到还可以这样
页: [1]
查看完整版本: 请问我这段代码是哪里出了问题(零基础学python018讲,第2题)