在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python 關(guān)于break和continue的返回結(jié)果

python 關(guān)于break和continue的返回結(jié)果

問題:
學(xué)習(xí)到廖雪峰教程的filter中,然后作業(yè)是找到回?cái)?shù)

回?cái)?shù)是指從左向右讀和從右向左讀都是一樣的數(shù),例如12321,909。請利用filter()篩選出回?cái)?shù):

一開始的代碼如下:

a=list(range(200))
def ou(n):
    x=str(n)#先把他變成字符串
    for i in range(len(x)):#在字符串里面迭代
        if x[i]==x[-(i+1)]:#如果x字符串順數(shù)第一個(gè)等于倒數(shù)第一個(gè)的值,那么就是回?cái)?shù)
            return int(x)#返回?cái)?shù)值
        else:
            continue#我本意是跳出for循環(huán),跳過不是回?cái)?shù)的值,而且我沒有設(shè)置return返回什么值,
            #但是后面print list還是會(huì)有顯示,但是我沒有寫return啊,不應(yīng)該返回啊
print(list(map(ou,a)))

結(jié)果
圖片描述

我大概修改了下,問題好像出現(xiàn)在continue這里,但是我本意是如果撲捉到這個(gè)數(shù)不是回?cái)?shù)的話,就跳出本次循環(huán),也就是跳過這個(gè)數(shù),但是不知道為什么100以后這個(gè)函數(shù)就沒用了

然后正確的代碼是把continue修改成break跳出循環(huán),如下
圖片描述

但是我還是很奇怪為什么continue不行,而且為什么是100以后就開始失效,而不是一開始。
然后我又想了下,把filter改成了map,結(jié)果如下:
圖片描述
前面的應(yīng)該是函數(shù)生效,else之后無返回,使用返回none,但是為什么100以后就不行了呢?

求解:

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

回答
編輯回答
綰青絲

break語句 將停止執(zhí)行最深層的循環(huán),并開始執(zhí)行下一行代碼。
continue 跳過當(dāng)前循環(huán)的剩余語句,然后繼續(xù)進(jìn)行下一輪循環(huán)。
例如:x = 100;
當(dāng)i = 0時(shí),x[0] 不等于 x[-1] 直接break結(jié)束了100這個(gè)數(shù)的循環(huán)。
而continue會(huì),跳出i=0的循環(huán),繼續(xù)校驗(yàn)
i = 1,x[1]為0 等于 x[-2],就返回了100這個(gè)數(shù)。

2017年3月14日 10:18
編輯回答
你的瞳

continue有兩個(gè)問題
1:continue判斷第一個(gè)if a[0] == a[-1],(三位數(shù)時(shí)候就是第一位和第三位)不滿足條件,會(huì)繼續(xù)判斷 if a[1] == a-2 此時(shí)恒成立,所以就是你說的100都失效了
2:break判斷第一個(gè)if a[0] == a[-1],不滿足不在繼續(xù)判斷了
簡單來說continue不管什么情況都會(huì)執(zhí)行完循環(huán),break在滿足條件會(huì)跳出循環(huán)
關(guān)于continue和break可以看看https://www.cnblogs.com/llgua...

2018年7月30日 09:52