louoruol 发表于 2021-5-10 11:55:55

循环问题求助

def finder(temp1,temp2):
       if temp2 not in temp1:
             print('在目标字符串中未找到字符串!')
      A = 0
      B = 0
      C = 1
      while C:
            if temp2 in temp1:
                  A = temp1.index(temp2) + 1 + A
                  B = B + 1
      return '子字符串在目标字符串中共出现 %d 次' % B

课后作业18讲中动动手第二小题,编写了上述函数
但循环没有运行,只运行了一次
请教各位大佬,我的循环问题在哪里

名字只有七个字 发表于 2021-5-10 13:28:18

def finder(temp1,temp2):
    if temp2 not in temp1:
      print('在目标字符串中未找到字符串!')
    A = 0
    B = 0
    C = 1
    while C:
      if len(temp1) == A:
            return '子字符串在目标字符串中共出现 %d 次' % B
      if temp2 in temp1:
            A = temp1.index(temp2) + 1 + A
            B = B + 1


修好了

louoruol 发表于 2021-5-10 13:50:35

名字只有七个字 发表于 2021-5-10 13:28
def finder(temp1,temp2):
    if temp2 not in temp1:
      print('在目标字符串中未找到字符串!')


没有明白,你能否在文字描述一下,存在的问题

名字只有七个字 发表于 2021-5-10 14:03:55

while C这里缩进有问题,并且你没有判断字符串遍历完成,所以没有结果

louoruol 发表于 2021-5-10 15:59:08

名字只有七个字 发表于 2021-5-10 14:03
while C这里缩进有问题,并且你没有判断字符串遍历完成,所以没有结果

是的 ,一个是我的"return"的缩进问题,应该是在总的“def”下面缩进;另外一个是判断遍历问题;
后来我自己做了修改,好像可以的,你帮我看看是否正确?
def finder(temp1,temp2):
        if temp2 not in temp1:
                print('在目标字符串中未找到字符串!')
        A = 0
        B = 0
        while len(temp1) > A:
                if temp2 in temp1:
                        A = temp1.index(temp2) + 1 + A
                        B = B + 1
                else:
                        A = A + 1
        return '子字符串在目标字符串中共出现 %d 次' % B

louoruol 发表于 2021-5-10 16:04:40

return 多缩进之后,造成“if”执行第一遍之后,就已return输出。所以这样循环根本就没有执行。
后来,return 缩进改进之后,循环体执行,但因为一直是真,所以死机,不出结果。
看我是否理解正确

louoruol 发表于 2021-5-10 16:09:43

>>> def finder(temp1,temp2):
        if temp2 not in temp1:
                print('在目标字符串中未找到字符串!')
        A = 0
        B = 0
        while len(temp1) > A:
                if temp2 in temp1:
                        A = temp1.index(temp2) + 1 + A
                        B = B + 1
                else:
                        A = A + 1
        return '子字符串在目标字符串中共出现 %d 次' % B,A

>>> finder("You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.","ou")
('子字符串在目标字符串中共出现 4 次', 99)

lightning_red 发表于 2021-5-10 23:05:13

def finder(temp1, temp2):
    if temp2 not in temp1:
      print('在目标字符串中未找到字符串!')

    A = 0
    B = 0
    while len(temp1) > A:
      if temp2 in temp1:
            A = temp1.index(temp2) + 1 + A
            B = B + 1
      else:
            A = A + 1
    print( '子字符串在目标字符串中共出现 %d 次' % B)

print('请输入目标字符串:',end='')
temp1 = input()
print('请输入子字符串(两个字符):',end='')
temp2 = input()
finder(temp1,temp2)
页: [1]
查看完整版本: 循环问题求助