今天給大家?guī)?lái)python條件判斷
1、前言
到目前為止,Python基礎(chǔ)系列的文章中的程序都是一條一條語(yǔ)句順序執(zhí)行的。在本章中,我會(huì)重點(diǎn)介紹讓程序選擇是否執(zhí)行語(yǔ)句塊的方法。
Python程序?yàn)槭裁纯梢詫?shí)現(xiàn)自我選擇的功能呢?因?yàn)樗梢愿鶕?jù)條件進(jìn)行判斷是否執(zhí)行下面的語(yǔ)句塊。
2、條件判斷
1.1 語(yǔ)句塊
什么是語(yǔ)句塊呢?
語(yǔ)句塊是在條件為真(條件語(yǔ)句)時(shí)執(zhí)行或者執(zhí)行多次(循環(huán)語(yǔ)句)的一組語(yǔ)句。在代碼前放置空格來(lái)縮進(jìn)語(yǔ)句即可創(chuàng)建語(yǔ)句塊。
關(guān)于縮進(jìn):
使用tab鍵也可以縮進(jìn)語(yǔ)句塊。Python將一個(gè)tab字符解釋為到下一個(gè)tab字符位置的移動(dòng),而一個(gè)tab字符位置為8個(gè)空格,但是標(biāo)準(zhǔn)且推薦的方式是只用空格,尤其是在每個(gè)縮進(jìn)需要4個(gè)空格的時(shí)候。
在Python中,英文版冒號(hào)(:)用來(lái)標(biāo)識(shí)語(yǔ)句塊的開(kāi)始,塊中的每一個(gè)語(yǔ)句都是縮進(jìn)的(縮進(jìn)量相同)。當(dāng)回退到和已經(jīng)已經(jīng)閉合的塊一樣的縮進(jìn)量時(shí),就表示當(dāng)前塊已經(jīng)結(jié)束了(這個(gè)不用擔(dān)心,很多程序編輯器和集成開(kāi)發(fā)環(huán)境都知道如何縮進(jìn)語(yǔ)句塊,可以幫助用戶輕松把握縮進(jìn))?。?!
1.2 條件和條件語(yǔ)句
傳說(shuō)中的if語(yǔ)句就要閃亮登場(chǎng)啦~~~
使用條件語(yǔ)句不要少寫了冒號(hào)(:),而且必須是英文版本的。
- if語(yǔ)句
對(duì)于if語(yǔ)句,若條件判定為真,那么后面的語(yǔ)句塊就會(huì)被執(zhí)行。若條件判定為假,語(yǔ)句塊就會(huì)被跳過(guò),不會(huì)執(zhí)行。
1 #if語(yǔ)句
2 age = 20
3 if age >= 18:
4 print('your age is', age)
5 print('adult')
- else語(yǔ)句
else子句只是增加一種選擇(之所以叫做子句是因?yàn)樗皇仟?dú)立的語(yǔ)句,而是if的一部分)。if...else...搭配,若if語(yǔ)句為False,不執(zhí)行if下的語(yǔ)句塊,而去else下的語(yǔ)句塊。
1 #if...else...語(yǔ)句
2 age = 3
3 if age >= 18:
4 print('your age is', age)
5 print('adult')
6 else:
7 print('your age is', age)
8 print('teenager')
- elif語(yǔ)句
如果需要檢查多個(gè)條件,就可以使用elif,它是else if的簡(jiǎn)寫,也是if和else語(yǔ)句的聯(lián)合使用,即使用elif做更細(xì)致的判斷:
1 #if...elif...elif...else...語(yǔ)句
2 age = 3
3 if age >= 18:
4 print('adult')
5 elif age >= 6:
6 print('teenager')
7 else:
8 print('kid')
- 條件語(yǔ)句總結(jié)
if < 條件判斷1 >:
< 執(zhí)行1 >
elif < 條件判斷2 >:
< 執(zhí)行2 >
elif < 條件判斷3 >:
< 執(zhí)行3 >
else:
< 執(zhí)行4 >
- 注意點(diǎn)
if語(yǔ)句執(zhí)行有個(gè)特點(diǎn),它是從上往下判斷,如果在某個(gè)判斷上是True,把該判斷對(duì)應(yīng)的語(yǔ)句執(zhí)行后,就忽略掉剩下的elif和else語(yǔ)句,所以,請(qǐng)測(cè)試并解釋為什么下面的程序打印的是teenager:
1 #條件語(yǔ)句執(zhí)行特點(diǎn):從上往下判斷
2 age = 20
3 if age >= 6:
4 print('teenager')
5 elif age >= 18:
6 print('adult')
7 else:
8 print('kid')
- input()運(yùn)用
最后看一個(gè)有問(wèn)題的條件判斷。很多同學(xué)會(huì)用input()讀取用戶的輸入,這樣可以自己輸入,程序運(yùn)行得更有意思,更有人性化。其實(shí)啊,Error往往出現(xiàn)在意想不到的地方。不信,來(lái)看段代碼:
#if語(yǔ)句中使用input()方法
birth = input('birth: ')
if birth < 2000:
print('00前')
else:
print('00后')
輸入1993,結(jié)果報(bào)錯(cuò):
Traceback (most recent call last):
File "< stdin >", line 1, in < module >
TypeError: unorderable types: str() > int()
為什么呢?我在剛接觸Python時(shí),用到此處報(bào)錯(cuò)也是百思不得其解,同樣糾結(jié)了好久。直到后來(lái),我才慢慢懂了。
這是因?yàn)?code>input()返回的數(shù)據(jù)類型是str,str不能直接和整數(shù)比較,必須先把str轉(zhuǎn)換成整數(shù)。Python提供了int()函數(shù)來(lái)完成這件事情。
s = input('birth: ')
birth = int(s)
if birth < 2000:
print('00前')
else:
print('00后')
因此,在編程中,條件判斷是非常重要的。條件判斷可以讓計(jì)算機(jī)自己做選擇,Python的if...elif...else很靈活。條件判斷從上向下匹配,當(dāng)滿足條件時(shí)執(zhí)行對(duì)應(yīng)的塊內(nèi)語(yǔ)句,后續(xù)的elif和else都不再執(zhí)行。
1.3 條件運(yùn)算符
條件判斷,if語(yǔ)句重在判斷并選擇是否執(zhí)行,而沒(méi)有過(guò)多涉及條件本身。
下面是Python中常見(jiàn)的條件運(yùn)算符:
| 表達(dá)式 | 描述 |
|---|---|
| x == y | x 等于 y |
| x < y | x 小于 y |
| x > y | x 大于 y |
| x >= y | x 大于等于 y |
| x <= y | x 小于等于 y |
| x != y | x 不等于 y |
| x is y | x和y是同一個(gè)對(duì)象 |
| x is not y | x和y不是同一對(duì)象 |
| x in y | x是y容器的成員 |
| x not in y | x不是y容器的成員 |
在Python中,比較運(yùn)算和賦值運(yùn)算是可以連接的——幾個(gè)運(yùn)算符可以連在一起使用,比如:0 < age <120。
有些運(yùn)算符值得特別關(guān)注:
一、相等運(yùn)算符
如果想要知道兩個(gè)內(nèi)容是否相等,你應(yīng)該使用相等運(yùn)算符,即兩個(gè)等號(hào)==。請(qǐng)務(wù)必記得是兩個(gè)等號(hào)?。?!單個(gè)等號(hào)可是賦值啊~~~
1 #相等運(yùn)算符==
2 > >?>"python" == "python"
3 True
4 > >?>"Python" == "python"
5 False
6 > >?>"python" = "python"
7 File "< stdin >", line 1
8 SyntaxError: can't assign to literal
9 #很明顯,單個(gè)相等運(yùn)算符是賦值運(yùn)算符,是用來(lái)改變值的,而不能用來(lái)比較
二、is:同一性運(yùn)算符
這個(gè)定義很不友好,什么是同一性?首次接觸真是云里霧里啊,真正理解is運(yùn)算符才知道同一性的真諦。
乍一看,is運(yùn)算符和==一樣,事實(shí)上卻不同。
示例代碼如下:
1 #同一性運(yùn)算符:is
2 #is和==之間的差異
3 > >?>x = y = [1,2,3]
4 > >?>z = [1,2,3]
5 > >?>x == y
6 True
7 > >?>x == z
8 True
9 > >?>x is y
10 True
11 > >?>y is x
12 True
13 > >?>x is z
14 False
15 > >?>z is x
16 False
注:==運(yùn)算符比較兩個(gè)對(duì)象是否相等,is判定兩者是否等同(同一個(gè)對(duì)象)。
三、in:成員資格運(yùn)算符
四、布爾運(yùn)算符:and、or和not
五、短路邏輯
短路???條件表達(dá)式中的布爾運(yùn)算符就有這個(gè)特性。什么是短路邏輯呢?如下所示:
條件表達(dá)式:a and b,該表達(dá)式何時(shí)返回True呢?即a與b同時(shí)為真,若a判定為False,則無(wú)論b是真是假,該表達(dá)式都為為False。
事實(shí)上,如果x為假,條件表達(dá)式會(huì)返回x的值,否則返回y的值。這種行為被稱為短路邏輯。而短路邏輯同樣適用于or運(yùn)算符。
小結(jié)
- 等號(hào)運(yùn)算符:==,單個(gè)等號(hào)=為賦值運(yùn)算符;
- Python的條件判斷if...elif...else很靈活;
- 條件判斷從上向下匹配;
- 短路邏輯適用于布爾運(yùn)算符(and,or)。
好了,今天就介紹到這兒。
電子發(fā)燒友App






















評(píng)論