本節(jié)摘要:條件判斷if…else語句;再議raw_input
Daily Record:每天一紀(jì)念,記錄下python的學(xué)習(xí)歷程,入門學(xué)習(xí)筆記與心得。本學(xué)習(xí)筆記主要基于廖雪峰大大的Python教程。不積跬步,無以至千里~ .?(? ??_??)?
@[toc]
條件判斷 if語句
如果if語句判斷是Ture,執(zhí)行if冒號(hào)后的縮進(jìn)語句;如果if語句判斷是False,則可以加上else語句,執(zhí)行else冒號(hào)后面的縮進(jìn)語句。當(dāng)有多個(gè)條件需判斷時(shí),可在if和else中間加入elif語句(else if語句)來添加判斷條件,進(jìn)行更細(xì)致的判斷。
if語句的完整形式就是:
if <條件判斷1>:
<執(zhí)行1>
elif <條件判斷2>:
<執(zhí)行2>
elif <條件判斷3>:
<執(zhí)行3>
else:
<執(zhí)行4>
因?yàn)椋?code>if語句的執(zhí)行,是從上到下判斷的,若在某個(gè)判斷條件上判斷為Ture,則把該判斷條件對(duì)應(yīng)的語句執(zhí)行完后,就會(huì)忽略掉余下的elif和else不再進(jìn)行判斷。
score = 85
if score >= 90:
print 'A'
elif score >= 70:
print 'B'
elif score >= 60:
print 'C'
else:
print 'D'
最終程序打印的輸出結(jié)果是B
即使85大于60,也不會(huì)輸出C。
>>> score = 75
>>> if score >= 60:
... print 'C'
... elif score >= 70:
... print 'B'
... elif score >= 90:
... print 'A'
... else:
... print 'D'
...
C
最終程序打印的輸出結(jié)果是C
if判斷條件還可以簡寫,比如寫:
if x:
print 'True'
只要x是非零數(shù)值、非空字符串、非空list等,就判斷為True,否則為False。
再議raw_input
在設(shè)計(jì)程序時(shí),可以讓用戶自行輸入,并用raw_input()讀取用戶的輸入。
age = raw_input('age: ')
>>> if age <= 18:
... print 'teenager'
... else:
... print 'adult'
輸入10,結(jié)果顯示adult
這么簡單的判斷Python也能搞錯(cuò)?
當(dāng)然不是Python的問題。
在Python的交互式命令行下打印age:
>>> age
'10'
>>> '10' < 18
False
>>> 10 < 18
True
原因是:
從raw_input()讀取的內(nèi)容永遠(yuǎn)以字符串str的形式返回,把字符串str和整數(shù)比較就不會(huì)得到期待的結(jié)果,必須先用int()函數(shù)把字符串str轉(zhuǎn)換為我們想要的整型:
age = int(raw_input('age: '))
再次運(yùn)行,就可以得到正確地結(jié)果teenager。
但是,如果輸入了abd,就會(huì)報(bào)錯(cuò)

因?yàn)?code>int()一旦發(fā)現(xiàn)輸入的不是數(shù)字,就會(huì)報(bào)錯(cuò),程序退出。
至于檢查并捕獲程序運(yùn)行期的錯(cuò)誤——留到后面的錯(cuò)誤和調(diào)試會(huì)涉及
Python 2.7 和Python 3.x的區(qū)別:raw_input()和input()
讀取用戶的輸入:
Python 2.7 用 raw_input()
Python 3.x 用 input()
在Python 3.x中,用input()讀取用戶的輸入。
age = input('age: ')
>>> if age <= 18:
... print('teenager')
... else:
... print('adult')
輸入10,結(jié)果會(huì)直接報(bào)錯(cuò):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()
因?yàn)?code>input()返回的數(shù)據(jù)類型是str,str不能直接和整數(shù)比較,必須先把str轉(zhuǎn)換成整數(shù)。Python提供了int()函數(shù)來完成這件事情:
s = input('age: ')
age = int(s)
>>> if age <= 18:
... print('teenager')
... else:
... print('adult')
再次運(yùn)行,就可以得到正確地結(jié)果teenager。
練習(xí)
小明身高1.75,體重80.5kg。請(qǐng)根據(jù)BMI公式(體重除以身高的平方)幫小明計(jì)算他的BMI指數(shù),并根據(jù)BMI指數(shù):
低于18.5:過輕
18.5-25:正常
25-28:過重
28-32:肥胖
高于32:嚴(yán)重肥胖
用if-elif判斷并打印結(jié)果:
【交作業(yè)】
>>> height = 1.75
>>> weight = 80.5
>>> bmi = weight/height**2
>>> bmi
26.285714285714285
>>> if bmi <= 18.5:
... print '過輕'
... elif bmi <= 25:
... print '正常'
... elif bmi <= 28:
... print '過重'
... elif bmi <= 32:
... print '肥胖'
... else:
... print '嚴(yán)重肥胖'
...
過重
>>> height = 1.75
>>> weight = 80.5
>>> bmi = weight/(height**2)
>>> if bmi < 18.5:
... print '小明bmi值為%.2f,過輕' % bmi
... elif bmi <= 25:
... print '小明bmi值為%.2f,正常' % bmi
... elif bmi <= 28:
... print '小明bmi值為%.2f,過重' % bmi
... elif bmi <= 32:
... print '小明bmi值為%.2f,肥胖' % bmi
... else:
... print '小明bmi值為%.2f,嚴(yán)重肥胖' % bmi
...
小明bmi值為26.29,過重