網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
關(guān)于else的用法總結(jié)
本文討論P(yáng)ython的for…else、while…else、try..except…else等語(yǔ)法
Python中的for、while是在循環(huán)體內(nèi)沒(méi)有break語(yǔ)句、沒(méi)有return語(yǔ)句,或者沒(méi)有異常出現(xiàn)時(shí)才執(zhí)行else語(yǔ)句,try..except…else是在try中無(wú)異常產(chǎn)生時(shí)執(zhí)行,注意不包括continue。
總的來(lái)說(shuō),是for、while、try語(yǔ)句中‘沒(méi)毛病’時(shí)才執(zhí)行,而在if..else語(yǔ)句中是if語(yǔ)句判斷為假(有毛病)才執(zhí)行else,這一點(diǎn)要區(qū)分開(kāi)來(lái)
下面舉例說(shuō)明下while..else作用,字符串有s1.find(s2)方法,作用是在字符串s1中查找s2,若找到就返回其索引值,不存在返回-1,但是列表卻沒(méi)find方法,以下用while…else語(yǔ)句實(shí)現(xiàn)list_find方法:
或者模擬list.index()的實(shí)現(xiàn):
最后關(guān)于try….except1..except2…else…finally的執(zhí)行順序:是try執(zhí)行完沒(méi)有任何問(wèn)題(即各個(gè)except語(yǔ)句均沒(méi)有捕獲到異常)時(shí),再去執(zhí)行else語(yǔ)句,最后執(zhí)行finally首尾工作,若執(zhí)行過(guò)程中只要有except捕獲到異常,就跳過(guò)else直接執(zhí)行finally;
你不知道的else用法
if-else
無(wú)論在哪個(gè)語(yǔ)言,if-else基本上都是通用的分支選擇結(jié)構(gòu)了。這里就簡(jiǎn)單介紹一下。
if 3%2==1: ? ? print("if") else: ? ? print("else")
if-else 滿足if則進(jìn)入if語(yǔ)塊,否則進(jìn)入else語(yǔ)塊 if 和else 只有一個(gè)語(yǔ)塊代碼會(huì)被執(zhí)行。
for-else
for-else搭配使用,我也只是在python的學(xué)習(xí)過(guò)程中碰到過(guò)。通過(guò)測(cè)試用例來(lái)比較一下。
fruits=["apple","orange","pear"] for item in fruits: ? ? if item=="apple": ? ? ? ? print("apple") else: ? ? print("for-else")
↓↓↓
apple for-else
這里for循環(huán)正常執(zhí)行結(jié)束,然后執(zhí)行了else語(yǔ)塊的代碼。
fruits=["apple","orange","pear"] for item in fruits: ? ? if item=="apple": ? ? ? ? print("break") ? ? ? ? break else: ? ? print("for-else")
↓↓↓
break
當(dāng)在for循環(huán)中執(zhí)行break語(yǔ)句跳出循環(huán)時(shí),else語(yǔ)塊沒(méi)有執(zhí)行。
即for-else搭配使用時(shí),for循環(huán)沒(méi)有因?yàn)閎reak語(yǔ)句跳出循環(huán),則會(huì)執(zhí)行else語(yǔ)句。
while-else
while-else與for-else類似,均為前面的循環(huán)正常結(jié)束時(shí)else語(yǔ)塊會(huì)被執(zhí)行。
i=5 while i>0: ? ? i=i-1 else: ? ? print("while-else")
↓↓↓
while-else
while語(yǔ)句正常執(zhí)行,當(dāng)while條件為false時(shí)結(jié)束while循環(huán),進(jìn)入else語(yǔ)塊。
i=5 while i>0: ? ? i=i-1 ? ? if i==3: ? ? ? ? print("break") ? ? ? ? break else: ? ? print("while-else")
↓↓↓
break
while語(yǔ)句因?yàn)閎reak語(yǔ)句跳出循環(huán),else語(yǔ)塊沒(méi)有被執(zhí)行。
while-else搭配使用時(shí),while循環(huán)沒(méi)有因?yàn)閎reak語(yǔ)句跳出循環(huán),則會(huì)執(zhí)行else語(yǔ)句
備注:上述例子的break不一定非得是break,只要能跳出當(dāng)前循環(huán)的語(yǔ)句都會(huì)跳出else語(yǔ)塊。else如果還有其他用法,請(qǐng)?jiān)谙路搅粞砸黄饘W(xué)習(xí)。
原文鏈接:https://blog.csdn.net/py_tester/article/details/78336226
相關(guān)推薦
- 2022-07-18 Ubuntu 18.04 共享文件夾 與其他系統(tǒng)互傳文件
- 2022-10-04 解決Pandas生成Excel時(shí)的sheet問(wèn)題的方法總結(jié)_python
- 2022-12-31 C++淺析序列數(shù)據(jù)封裝與優(yōu)化實(shí)現(xiàn)方法_C 語(yǔ)言
- 2023-02-25 GoLang并發(fā)編程中條件變量sync.Cond的使用_Golang
- 2022-05-22 redis數(shù)據(jù)結(jié)構(gòu)之壓縮列表_Redis
- 2022-10-01 使用flask如何獲取post請(qǐng)求參數(shù)_python
- 2023-01-29 HTTP與HTTPS超文本傳輸協(xié)議的區(qū)別是什么_經(jīng)驗(yàn)交流
- 2022-07-30 Linux文件管理命令行
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支