【Python入門學(xué)習(xí)】6.條件判斷if

本節(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í),可在ifelse中間加入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ì)忽略掉余下的elifelse不再進(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,過重
在這里插入圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容