python 关于break和continue的返回结果

问题:
学习到廖雪峰教程的filter中,然后作业是找到回数

回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数:

一开始的代码如下:

a=list(range(200))
def ou(n):
    x=str(n)#先把他变成字符串
    for i in range(len(x)):#在字符串里面迭代
        if x[i]==x[-(i+1)]:#如果x字符串顺数第一个等于倒数第一个的值,那么就是回数
            return int(x)#返回数值
        else:
            continue#我本意是跳出for循环,跳过不是回数的值,而且我没有设置return返回什么值,
            #但是后面print list还是会有显示,但是我没有写return啊,不应该返回啊
print(list(map(ou,a)))

结果
图片描述

我大概修改了下,问题好像出现在continue这里,但是我本意是如果扑捉到这个数不是回数的话,就跳出本次循环,也就是跳过这个数,但是不知道为什么100以后这个函数就没用了

然后正确的代码是把continue修改成break跳出循环,如下
图片描述

但是我还是很奇怪为什么continue不行,而且为什么是100以后就开始失效,而不是一开始。
然后我又想了下,把filter改成了map,结果如下:
图片描述
前面的应该是函数生效,else之后无返回,使用返回none,但是为什么100以后就不行了呢?

求解:

为什么上面continuebreak差距这么大,而且使用continue是100以后才开始失效的呢?

阅读 4k
2 个回答

break语句 将停止执行最深层的循环,并开始执行下一行代码。
continue 跳过当前循环的剩余语句,然后继续进行下一轮循环。
例如:x = 100;
当i = 0时,x[0] 不等于 x[-1] 直接break结束了100这个数的循环。
而continue会,跳出i=0的循环,继续校验
i = 1,x[1]为0 等于 x[-2],就返回了100这个数。

continue有两个问题
1:continue判断第一个if a[0] == a[-1],(三位数时候就是第一位和第三位)不满足条件,会继续判断 if a[1] == a-2 此时恒成立,所以就是你说的100都失效了
2:break判断第一个if a[0] == a[-1],不满足不在继续判断了
简单来说continue不管什么情况都会执行完循环,break在满足条件会跳出循环
关于continue和break可以看看https://www.cnblogs.com/llgua...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题