計算機(jī)之所以能做很多自動化的任務(wù),因?yàn)樗梢宰约鹤鰲l件判斷。
比如画恰,輸入用戶年齡,根據(jù)年齡打印不同的內(nèi)容吸奴,在Python程序中允扇,用if語句實(shí)現(xiàn):
age =20
if age >=18:
????print('your age is', age)
????print('adult')
根據(jù)Python的縮進(jìn)規(guī)則,如果if語句判斷是True则奥,就把縮進(jìn)的兩行print語句執(zhí)行了考润,否則,什么也不做逞度。
也可以給if添加一個else語句额划,意思是,如果if判斷是False档泽,不要執(zhí)行if的內(nèi)容俊戳,去把else執(zhí)行了:
age =3
if age >=18:
????print('your age is', age)
????print('adult')
else:
????print('your age is', age)
????print('teenager')
注意不要少寫了冒號:。
當(dāng)然上面的判斷是很粗略的馆匿,完全可以用elif做更細(xì)致的判斷:
age =3
if age >=18:? ??
????print('adult')
elif age >=6:? ??
????print('teenager')
else:? ??
????print('kid')
elif是else if的縮寫抑胎,完全可以有多個elif,所以if語句的完整形式就是:
if<條件判斷1>:
????執(zhí)行1>
elif<條件判斷2>:
????<執(zhí)行2>
elif<條件判斷3>:
????<執(zhí)行3>
else:
????<執(zhí)行4>
if語句執(zhí)行有個特點(diǎn)渐北,它是從上往下判斷阿逃,如果在某個判斷上是True,把該判斷對應(yīng)的語句執(zhí)行后搀菩,就忽略掉剩下的elif和else肪跋,所以,請測試并解釋為什么下面的程序打印的是teenager:
age =20
if age >=6:? ??
????print('teenager')
elif age >=18:? ??
????print('adult')
else:? ??
????print('kid')
if判斷條件還可以簡寫土砂,比如寫:
if x:
????print('True')
只要x是非零數(shù)值州既、非空字符串、非空list等萝映,就判斷為True吴叶,否則為False。
再議input
最后看一個有問題的條件判斷序臂。很多同學(xué)會用input()讀取用戶的輸入蚌卤,這樣可以自己輸入,程序運(yùn)行得更有意思:
birth = input('birth: ')
if birth <2000:
????print('00前')
else:
????print('00后')
輸入1982贸宏,結(jié)果報錯:
Traceback (most recent call last):?
?File "<stain>", line 1, in<module>
TypeError: unorderable types: str() > int()
這是因?yàn)閕nput()返回的數(shù)據(jù)類型是str吭练,str不能直接和整數(shù)比較,必須先把str轉(zhuǎn)換成整數(shù)析显。Python提供了int()函數(shù)來完成這件事情:
s = input('birth: ')
birth = int(s)
if birth <2000:
????print('00前')
else:
????print('00后')
再次運(yùn)行鲫咽,就可以得到正確地結(jié)果。但是谷异,如果輸入abc呢分尸?又會得到一個錯誤信息:
Traceback (most recentcalllast):?
File"<stdin>", line1,in<module>
ValueError: invalid literalforint()withbase10:'abc'
原來int()函數(shù)發(fā)現(xiàn)一個字符串并不是合法的數(shù)字時就會報錯,程序就退出了尺上。
如何檢查并捕獲程序運(yùn)行期的錯誤呢材蛛?后面的錯誤和調(diào)試會講到。
練習(xí)
小明身高1.75怎抛,體重80.5kg卑吭。請根據(jù)BMI公式(體重除以身高的平方)幫小明計算他的BMI指數(shù),并根據(jù)BMI指數(shù):
低于18.5:過輕
18.5-25:正常
25-28:過重
28-32:肥胖
高于32:嚴(yán)重肥胖
用if-elif判斷并打印結(jié)果
總結(jié)
條件判斷可以讓計算機(jī)自己做選擇马绝,Python的if...elif...else很靈活豆赏。
條件判斷從上向下匹配,當(dāng)滿足條件時執(zhí)行對應(yīng)的塊內(nèi)語句,后續(xù)的elif和else都不再執(zhí)行掷邦。