網(wǎng)站首頁 編程語言 正文
前言
python 中 if 的用法(if else, if not, elif)
if語句實際上是:if True: …執(zhí)行后面的語句
python 中的 if 有下面幾種常見用法:
- if … else…
- if …elif…else…
- if not …
- if … not …
1.if … else …
實際上,還可以用用下面這種方式,使代碼更精簡:
賦值也是可以的:
2. if … elif … else…
elif 是多條件判斷語句,比如:
當(dāng)然,當(dāng)條件很多時,可以有多個elif,比如上面這個簡單的例子可以再增加幾個條件
3.if not …
i在講 if not 之前,得先弄清楚 not 在python中的意思:
not 是一個邏輯判斷詞
當(dāng) not 與變量連用的時候:
所以,在python中,None, False, 空字符串 ‘’ , 0, 空列表[], 空字典{}, 空元組() 都相當(dāng)于False。
要注意的是,雖然”0“是 False,但是 ”[0]" 是True ,因為只有空列表為False,字典也是如此,另外有空格的字符串 ’ ’ 也不算空字符串。
仔細的同學(xué)可能看到上面元組(0)并不是True,那是因為在寫元組tupple時,如果只有一個元素,需要在元素后面加上逗號,比如:(0,),指定為元組類型,如果不加逗號,python會把它當(dāng)成整型,整數(shù) 0 為False,所以(0)也為False。
弄清楚not之后,加上 if 就很簡單了,如果if not 后面的語句是False,則執(zhí)行冒號后面的語句,否則執(zhí)行else(如果有else的話)。
注意:有時候if not 的語句很長,又夾帶is、and、or,容易理解錯誤,比如:
if not x is a:
應(yīng)該理解為if not (x is a) ,而不是if (not x) is a
if not x or a =b:
應(yīng)該理解為if (not x) or (ab),而不是 if not (x or ab),當(dāng)然這里a==b可以換成其他條件。or 換成and也是一樣,也就是說,(and、or)和is不一樣,要仔細甄別。
if not語句是非常常用的語句,尤其在數(shù)據(jù)結(jié)構(gòu)中。由于python語言的簡潔,if not 和and. or. is.連用可以減少大量的代碼空間。
4. if … not…
這種情況一般 not 與 is 連用,is not 直接按字面理解即可。理解為 if x (is not) None,而不是if x is (not None)。
補充:
在實際寫代碼的時候,經(jīng)常遇到要判斷None的情況,可能會遇見下面這些寫法:
if x is None:…#最好使用這種寫法
if not x:…
if not x is None: …
而在判斷None的過程,常常伴隨著 [] 的判斷,這時我們使用if not x是有問題的:
因為上面講過,not是邏輯判斷,而列表、空字典等的邏輯和None是一樣的,都是False,if not 是沒辦法區(qū)分的,輸出的都是True。所以要確定變量=[]時對if not 的判斷沒有影響,否則會報錯。
使用 if not x is None也是有問題的,這種寫法容易誤解為if (not x) is None,而實際上應(yīng)該理解為 not (a is None)
a is None 返回False ,所以not(False)返回True,而實際上[] 并不是None,應(yīng)該返回False
所以最好直接使用if x is None,簡介明了。
a is b比較的a 和 b的id,只有a,b的id相同才會輸出True:
上面if … not …中的 is not其實是一樣的道理
補充:if條件語句綜合練習(xí)
判斷閏年:
用戶輸入年份year, 判斷是否為閏年?
我們知道:能被4整除但不能被100整除的 或者 能被400整除 那么就是閏年
year = int(input('輸入年份:'))
if year %4 ==0 and year %100 != 0:
print('%d是閏年' %year)
elif year %400 ==0:
print('%d是閏年'%year)
else:
print('%d不是閏年' %year)
結(jié)果:
總結(jié)
原文鏈接:https://blog.csdn.net/F_Y202172/article/details/123997181
相關(guān)推薦
- 2022-11-05 docker中nginx卸載、安裝、配置及掛載詳細教程_docker
- 2022-12-06 深入了解C語言中的字符串和內(nèi)存函數(shù)_C 語言
- 2022-04-15 C語言各種操作符透徹理解上篇_C 語言
- 2022-07-30 C語言數(shù)組長度的計算方法實例總結(jié)(sizeof與strlen)_C 語言
- 2022-10-15 Redisson?加鎖解鎖的實現(xiàn)_Redis
- 2022-11-04 Linux下自動刪除過期備份和自動異地備份的腳本_linux shell
- 2022-07-14 Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼_C 語言
- 2022-08-28 Centos解決顯卡驅(qū)動問題:NVIDIA-SMI has failed because it co
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支