鱼C论坛

 找回密码
 立即注册
查看: 1911|回复: 7

[已解决]循环问题求助

[复制链接]
发表于 2021-5-10 11:55:55 | 显示全部楼层 |阅读模式

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

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

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

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

最佳答案
2021-5-10 14:03:55
while C这里缩进有问题,并且你没有判断字符串遍历完成,所以没有结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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:]:
            A = temp1[A:].index(temp2) + 1 + A
            B = B + 1


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

使用道具 举报

 楼主| 发表于 2021-5-10 13:50:35 | 显示全部楼层
名字只有七个字 发表于 2021-5-10 13:28
def finder(temp1,temp2):
    if temp2 not in temp1:
        print('在目标字符串中未找到字符串!')

没有明白,你能否在文字描述一下,存在的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-10 14:03:55 | 显示全部楼层    本楼为最佳答案   
while C这里缩进有问题,并且你没有判断字符串遍历完成,所以没有结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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:]:
                        A = temp1[A:].index(temp2) + 1 + A
                        B = B + 1
                else:
                        A = A + 1
        return '子字符串在目标字符串中共出现 %d 次' % B
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-10 16:04:40 | 显示全部楼层
return 多缩进之后,造成“if”执行第一遍之后,就已return输出。所以这样循环根本就没有执行。
后来,return 缩进改进之后,循环体执行,但因为一直是真,所以死机,不出结果。
看我是否理解正确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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:]:
                        A = temp1[A:].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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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:]:
            A = temp1[A:].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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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