今天這節(jié)課我們來(lái)做一個(gè)微小型項(xiàng)目:體脂率計(jì)算器蝇狼。先給大家展示一下成品效果看一下。
(抱歉視頻放不進(jìn)去倡怎,想觀看的可以關(guān)注東東老師講編程迅耘,私信,視頻課堂觀看呦监署!)
if......else語(yǔ)句
if翻譯過(guò)來(lái)就是如果颤专,那么else翻譯為中文就是否則。我們經(jīng)常說(shuō)程序這個(gè)詞語(yǔ)钠乏,其實(shí)從廣義上來(lái)講栖秕,程序無(wú)非就因果關(guān)系罷了。也就是我們這節(jié)課要講的if.....else語(yǔ)句晓避〈睾矗可能有的同學(xué)還很蒙,啥意思扒喂啊暑塑?舉個(gè)簡(jiǎn)單的例子:如果我是男生,我就去男廁所锅必,否則事格,我就去女廁所。我相信大部分同學(xué)都能明白我說(shuō)的這句話。那么如果把這句話翻譯成代碼驹愚,那該如何翻譯呢远搪?來(lái)看下面代碼:
# 讓用戶輸入他的性別,并將用戶輸入的性別
存進(jìn)'user'這個(gè)變量名中
user=input('請(qǐng)輸入你的性別:')
# 進(jìn)行判斷:如果用戶輸入的是'男生'
if user=='男生':
? ? # 輸出么鹤,進(jìn)入男廁所
? ? print('進(jìn)入男廁所')
? ? # 否則
else:
? ? # 輸出终娃,進(jìn)入女廁所
? ? print('進(jìn)入女廁所')
上面這段代碼哪怕我加了注釋也許也有一大部分同學(xué)看不懂,為什么有的地方加冒號(hào)蒸甜,有的地方不用加棠耕?為什么有的地方有空格,有的地方不用柠新,感覺(jué)好像看得懂窍荧,又好像看不懂。
沒(méi)關(guān)系恨憎,我們一點(diǎn)點(diǎn)來(lái)解釋蕊退。實(shí)際上去掉那些看不懂的冒號(hào)啊,空格什么的憔恳,單純將英文單詞翻譯過(guò)來(lái)其實(shí)也很好理解:
將用戶輸入的性別儲(chǔ)存進(jìn)user這個(gè)變量名當(dāng)中瓤荔,再將變量名拿出去跟’男生‘或者’女生‘作比較,如果跟’男生‘這個(gè)字符串進(jìn)行比較钥组,進(jìn)而匹配成功输硝,那就進(jìn)男廁所,否則就進(jìn)女廁所程梦。
那么這個(gè)時(shí)候?qū)嶋H上就體現(xiàn)出了python語(yǔ)言的自然性点把,我們經(jīng)常聽(tīng)到說(shuō)python是最接近于自然的語(yǔ)言,換句話說(shuō)郎逃,實(shí)際上python就是把我們平常說(shuō)的話用英文代碼的方式表達(dá)出來(lái)褒翰,只不過(guò)python多加了一些代碼獨(dú)有的語(yǔ)法罷了影暴,如果將這些語(yǔ)法去掉探赫,那我們?cè)倏绰追停瑢?shí)際上就是一句很流暢的人類語(yǔ)言毛仪,不信我們將python語(yǔ)法去掉 展現(xiàn)出來(lái)看看↓
user=input('請(qǐng)輸入你的性別:')
如果user與'男生'相等箱靴,輸出進(jìn)入男廁所
if user=='男生'衡怀,print('進(jìn)入男廁所')
否則,進(jìn)入女廁所
else,print('進(jìn)入女廁所')
就這么簡(jiǎn)單够委!
python語(yǔ)法
好怖现,那么接下來(lái)講講語(yǔ)法。我們說(shuō)雖然python是最接近自然語(yǔ)言的一個(gè)計(jì)算機(jī)語(yǔ)言潘拨,但是他也是有自己的語(yǔ)法的饶号。比如說(shuō)冒號(hào)讨韭。
冒號(hào)
有的同學(xué)看到冒號(hào)覺(jué)得奇怪,為什么有的地方有冒號(hào)狰闪,有的地方?jīng)]有埋泵,那么我們到底什么時(shí)候應(yīng)該加冒號(hào)丽声,什么時(shí)候不加呢雁社?很簡(jiǎn)單霉撵,其實(shí)相信細(xì)心的同學(xué)已經(jīng)發(fā)現(xiàn)了徒坡,有判斷語(yǔ)句的地方都有冒號(hào)喇完,那什么又是判斷語(yǔ)句呢?在我們上節(jié)課的文章當(dāng)中不脯,我給大家普及了一個(gè)東西叫’比較運(yùn)算符‘,沒(méi)有仔細(xì)看的同學(xué)可以回過(guò)去看看比較運(yùn)算符這一章海洼,比較運(yùn)算符說(shuō)白了跨新,其實(shí)就是我們數(shù)學(xué)當(dāng)中的比大小的大于號(hào)小于號(hào)等于號(hào)而已坏逢,最多加了個(gè)’域帐!=‘是整,意思是非等于也就是我們說(shuō)的不等于的不等號(hào)肖揣。
那么這么一講同學(xué)們?cè)倩厝タ纯磩偛诺拇a浮入,是不是發(fā)現(xiàn)龙优,user=='男生'后面帶了個(gè)小小的冒號(hào)呢?那有的同學(xué)又說(shuō)了事秀,老師,else后面沒(méi)有判斷語(yǔ)句啊易迹,那他為啥有睹欲,他是充錢玩家窘疮?NO NO NO,else雖然后面沒(méi)有判斷語(yǔ)句闸衫,但是他也是要有冒號(hào)滴,這是黨的硬性規(guī)定含懊,不明白的回去好好翻翻黨章。圖片衅胀,開(kāi)玩笑的,其實(shí)else后面加冒號(hào)就跟1+1=2一樣酥筝,大家能告訴我為啥1+1=2嗎滚躯?其實(shí)都是一樣的道理。并且還有一點(diǎn)必須強(qiáng)調(diào)注意:if后面必須加判斷語(yǔ)句嘿歌,而else后面除了冒號(hào)掸掏,啥也不能加,判斷語(yǔ)句也不能加宙帝,這也是python的語(yǔ)法丧凤。
當(dāng)然,今天我們也只是說(shuō)判斷語(yǔ)句后面必須加冒號(hào)步脓,但并沒(méi)有說(shuō)其他的特殊的代碼不能加愿待,這個(gè)就放到以后遇到了跟大家說(shuō)明標(biāo)注一下。
空格
那么空格又是什么語(yǔ)法呢靴患?什么情況下應(yīng)該加空格仍侥,而什么情況下不加空格,其實(shí)我覺(jué)得加不加空格這個(gè)語(yǔ)法鸳君,是最容易理解的农渊,至少在我看來(lái)是如此。
那大家會(huì)看到或颊,在上面代碼當(dāng)中砸紊,只有兩行代碼加了空格,囱挑,一個(gè)是’print('進(jìn)入男廁所')‘醉顽,另外一個(gè)是’print('進(jìn)入女廁所')‘,這兩行代碼有一個(gè)共同點(diǎn)就是:他們都是判斷下的結(jié)果看铆。
’print('進(jìn)入男廁所')‘徽鼎,是程序判斷到用戶輸入了’男生‘并且跟我們預(yù)先設(shè)置的’男生‘字符串匹配成功后出現(xiàn)的結(jié)果,既然是user=='男生':匹配成功后的結(jié)果弹惦,那理當(dāng)在他的判斷下空四格否淤,表示進(jìn)入男廁所這個(gè)結(jié)果是user=='男生':的匹配成功后干的事兒。那么進(jìn)入女廁所也是同樣的道理棠隐,我就不多做贅述了石抡。
if....elif.....else語(yǔ)句
先跟大家解釋一下elif,是else與if的結(jié)合體,縮寫為elif助泽,意思是:否則如果啰扛。
那么有的運(yùn)行過(guò)程序的同學(xué)同樣會(huì)發(fā)現(xiàn)一件事情就是嚎京,我們?nèi)绻斎搿猩敲闯绦驎?huì)告訴我們隐解,進(jìn)入男廁所鞍帝,但是如果我是女士,我不論輸入什么話煞茫,他都會(huì)出現(xiàn)帕涌,進(jìn)入女廁所。哪怕我們輸入‘奧里給’他也會(huì)說(shuō)续徽,進(jìn)入女廁所蚓曼,那作為一個(gè)程序來(lái)說(shuō)他是很不嚴(yán)謹(jǐn)?shù)模踔廖覀兛梢哉J(rèn)為這是個(gè)bug钦扭,既然是bug纫版,那我們就需要想辦法修復(fù)他。這個(gè)時(shí)候就用到我們的if....elif.....else語(yǔ)句了客情。
經(jīng)常聽(tīng)雞湯文的同學(xué)可能聽(tīng)過(guò)這么一句話:這個(gè)世界不是非黑即白的其弊。這句話在我們if....elif.....else語(yǔ)句里面體現(xiàn)的淋漓盡致。而if.....else語(yǔ)句是典型的非黑即白裹匙,不是if就是else瑞凑,反正兩個(gè)判斷結(jié)果我占一個(gè)。但是if....elif.....else語(yǔ)句出現(xiàn)了中庸之道概页。
我們程序說(shuō)籽御,只要你不輸男生,哪怕你輸入個(gè)‘男’而非‘男生’惰匙,我都會(huì)輸出進(jìn)入女廁所這句話技掏。那這怎么辦啊项鬼?看下面這段代碼:
# 讓用戶輸入他的性別哑梳,
并將用戶輸入的性別存進(jìn)'user'這個(gè)變量名中
user=input('請(qǐng)輸入你的性別:')
# 進(jìn)行判斷:如果用戶輸入的是'男生'
if user=='男生':
? ? # 輸出,進(jìn)入男廁所
? ? print('進(jìn)入男廁所')
? ? # 否則如果用戶輸入的是'女生'
elif user=='女生':
? # 輸出绘盟,進(jìn)入女廁所
? ? print('進(jìn)入女廁所')
? ? # 否則
else:
? ? # 輸出鸠真,不要亂輸哦
? ? print('不要亂輸哦')
其實(shí)看完這段代碼我相信大部分同學(xué)都已經(jīng)能看明白了,如果用戶輸入的是’男生‘龄毡,那么程序輸出吠卷,進(jìn)入男廁所,否則如果用戶輸入’女生‘沦零,則輸出進(jìn)入女廁所祭隔,否則直接告訴用戶不要亂輸哦。
那么需要注意的是:elif跟if一樣路操,也是必須要在后面加判斷語(yǔ)句疾渴,而且是強(qiáng)制性的千贯。而且elif的語(yǔ)句與他相對(duì)應(yīng)的判斷結(jié)果必須是在if與else的中間不可以出現(xiàn)以elif開(kāi)頭或者結(jié)尾的現(xiàn)象,否則就會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤搞坝。但是elif可以在中間出現(xiàn)多個(gè)elif語(yǔ)句搔谴,因?yàn)槲覀円话闱闆r下不可能只有三個(gè)選項(xiàng),也許會(huì)有很多個(gè)選項(xiàng)桩撮,那這個(gè)時(shí)候己沛,我們就只能在中間有幾個(gè)選項(xiàng)加幾個(gè)elif了。舉個(gè)例子:如果今天是禮拜一距境,那么我就去跟馬云談?wù)勆猓駝t如果今天是禮拜二垮卓,那么我就跟迪麗熱巴去三亞游泳垫桂,否則如果今天是禮拜三,我就去我在澳洲的私人別墅打王者榮耀粟按,否則如果今天是禮拜四诬滩,那么我就去跟特朗普談?wù)劽绹?guó)疫情的事兒,否則如果今天是禮拜五灭将,那么我就去跟迪迦奧特曼說(shuō)說(shuō)保衛(wèi)地球的事兒疼鸟,否則我就告訴玩家不要亂輸,沒(méi)有其他安排了庙曙,那有的同學(xué)問(wèn)我空镜,為啥沒(méi)有周六周天----------對(duì)不起因?yàn)槲覍?shí)在編不下去了。
課后練習(xí)
在我們生活當(dāng)中捌朴,有許多同學(xué)因?yàn)樽约旱捏w重發(fā)愁吴攒,有的人怎么吃都吃不胖,有的人卻喝口水都長(zhǎng)肉砂蔽,那我們?nèi)绾稳ビ米羁茖W(xué)的方式來(lái)定義自己是胖是瘦呢洼怔?在我們國(guó)際慣例當(dāng)中,有一個(gè)值叫BMI值左驾,這個(gè)BMI值就是用最科學(xué)的方式來(lái)計(jì)算我們身材的胖瘦的镣隶。BMI具體的計(jì)算公式就是:體重(kg)/身高(m)*身高。也就是用我們每個(gè)人的具體體重除以身高的平方诡右。那么如何利用BMI看胖瘦呢安岂?看下面:
成人的BMI數(shù)值:
過(guò)輕:低于18.5
正常:18.5-25
過(guò)重:25-28
肥胖:28-32
非常肥胖, 高于32
那么接下來(lái)我們就用代碼將這個(gè)程序做出來(lái),那么最終效果可以參照開(kāi)頭的視頻稻爬。
eval()函數(shù)
下面這個(gè)程序可能有兩個(gè)點(diǎn)大家不太懂嗜闻,第一個(gè)是eval()函數(shù)。eval()函數(shù)其實(shí)他的作用很簡(jiǎn)單桅锄。
我們一般情況下input()函數(shù)用戶輸入的數(shù)字琉雳,例如說(shuō)用戶的體重是83公斤样眠,那么假如說(shuō)他輸入了83,input()函數(shù)會(huì)自動(dòng)將用戶輸入的83這個(gè)數(shù)字帶上引號(hào)變成字符串變量翠肘,那我們之前說(shuō)過(guò)檐束,不論是整數(shù)也好,抑或是小數(shù)也好束倍,只要它帶上引號(hào)被丧,那么他就是字符串,字符串我們說(shuō)是不能夠進(jìn)行加減乘除這樣的數(shù)學(xué)運(yùn)算的绪妹。用字符串進(jìn)行加減乘除會(huì)出現(xiàn)語(yǔ)法報(bào)錯(cuò)甥桂。那我們想讓用戶輸入的數(shù)字變成整數(shù)類型怎么辦,看下面:
我們之前說(shuō)過(guò)int()除了是整型類型的縮寫以外邮旷,他還是我們python當(dāng)中的函數(shù)保留字黄选,他的作用就是將帶有引號(hào)的數(shù)字強(qiáng)制轉(zhuǎn)換為整數(shù),同樣的浮點(diǎn)數(shù)類型float()函數(shù)也是同樣的道理婶肩,意味著將字符串類型強(qiáng)制轉(zhuǎn)換為小數(shù)办陷。
那么這個(gè)時(shí)候問(wèn)題來(lái)了,有的同學(xué)的體重是整數(shù)律歼,有的同學(xué)的體重是小數(shù)民镜,我們?cè)趇nput()前面加int()也不是,加float()也不是险毁,為了數(shù)據(jù)的準(zhǔn)確性我們只能加eval()函數(shù)制圈,eval()函數(shù)的特性就是可以兼顧浮點(diǎn)數(shù)跟整數(shù)兩種類型,也就是說(shuō)辱揭,我們的用戶不論輸入小數(shù)或者整數(shù)离唐,只要有eval()函數(shù),他都可以兼容问窃。
BMI算法
如果經(jīng)澈蓿看書的同學(xué)或者經(jīng)常看類似視頻的同學(xué)一定會(huì)聽(tīng)過(guò)一個(gè)詞語(yǔ)叫算法域庇。那本節(jié)課我們也有一個(gè)算法是BMI算法嵌戈,當(dāng)然這個(gè)BMI算法是百度過(guò)來(lái)的是固定的公式。但是大家內(nèi)心一定要有算法這個(gè)概念听皿。那么下面的代碼流程的話其實(shí)也很簡(jiǎn)單:
第一步:讓用戶輸入他的個(gè)人數(shù)據(jù)熟呛,包括體重與身高。
第二步:然后我們將用戶輸進(jìn)來(lái)的兩個(gè)參數(shù)賦值給weight與height這兩個(gè)變量名尉姨。
第三步:再將這兩個(gè)已經(jīng)有值的變量名套進(jìn)BMI公式庵朝。套完以后再將這個(gè)公式的最終計(jì)算答案賦值給BMI這個(gè)變量名。
第四步:利用BMI進(jìn)行判斷,判斷他的計(jì)算結(jié)果的區(qū)域九府,再通過(guò)不同的區(qū)域椎瘟,去進(jìn)行具體的操作。
具體代碼如下:
weight=eval(input('輸入您的體重(kg):'))
hight=eval(input('輸入您的身高(m):'))
BMI=weight/hight**2
if BMI>32:
? ? print('過(guò)于肥胖')
elif 32>BMI>=28:
? ? print('肥胖')
elif 28>BMI>=25:
? ? print('稍重')
elif 25>BMI>=18.5:
? ? print('正常')
elif 18.5>BMI:
? ? print('過(guò)輕')
else:
? ? print('不要亂輸')
好的侄旬,這期就到這里啦肺蔚,我們下期見(jiàn),拜拜儡羔!