问题:
学习到廖雪峰教程的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以后就不行了呢?
求解:
为什么上面continue
和break
差距这么大,而且使用continue
是100以后才开始失效的呢?
break语句 将停止执行最深层的循环,并开始执行下一行代码。
continue 跳过当前循环的剩余语句,然后继续进行下一轮循环。
例如:x = 100;
当i = 0时,x[0] 不等于 x[-1] 直接break结束了100这个数的循环。
而continue会,跳出i=0的循环,继续校验
i = 1,x[1]为0 等于 x[-2],就返回了100这个数。