今天這節課我們來做一個微小型項目:體脂率計算器。先給大家展示一下成品效果看一下。
if......else語句
if翻譯過來就是如果,那麼else翻譯為中文就是否則。我們經常說程序這個詞語,其實從廣義上來講,程序無非就因果關係罷了。也就是我們這節課要講的if.....else語句。可能有的同學還很蒙,啥意思啊?舉個簡單的例子:如果我是男生,我就去男廁所,否則,我就去女廁所。我相信大部分同學都能明白我說的這句話。那麼如果把這句話翻譯成代碼,那該如何翻譯呢?來看下面代碼:
# 讓用戶輸入他的性別,並將用戶輸入的性別
存進'user'這個變量名中
user=input('請輸入你的性別:')# 進行判斷:如果用戶輸入的是'男生'if user=='男生':# 輸出,進入男廁所 print('進入男廁所') # 否則else: # 輸出,進入女廁所 print('進入女廁所')
上面這段代碼哪怕我加了注釋也許也有一大部分同學看不懂,為什麼有的地方加冒號,有的地方不用加?為什麼有的地方有空格,有的地方不用,感覺好像看得懂,又好像看不懂。
沒關係,我們一點點來解釋。實際上去掉那些看不懂的冒號啊,空格什麼的,單純將英文單詞翻譯過來其實也很好理解:
將用戶輸入的性別儲存進user這個變量名當中,再將變量名拿出去跟』男生『或者』女生『作比較,如果跟』男生『這個字符串進行比較,進而匹配成功,那就進男廁所,否則就進女廁所。
那麼這個時候實際上就體現出了python語言的自然性,我們經常聽到說python是最接近於自然的語言,換句話說,實際上python就是把我們平常說的話用英文代碼的方式表達出來,只不過python多加了一些代碼獨有的語法罷了,如果將這些語法去掉,那我們再看,實際上就是一句很流暢的人類語言,不信我們將python語法去掉 展現出來看看↓:
user=input('請輸入你的性別:')
如果user與'男生'相等,輸出進入男廁所
if user=='男生',print('進入男廁所')
否則,進入女廁所
else,print('進入女廁所')
就這麼簡單!
python語法
好,那麼接下來講講語法。我們說雖然python是最接近自然語言的一個計算機語言,但是他也是有自己的語法的。比如說冒號。
冒號
有的同學看到冒號覺得奇怪,為什麼有的地方有冒號,有的地方沒有,那麼我們到底什麼時候應該加冒號,什麼時候不加呢?很簡單,其實相信細心的同學已經發現了,有判斷語句的地方都有冒號,那什麼又是判斷語句呢?在我們上節課的文章當中,我給大家普及了一個東西叫』比較運算符『,沒有仔細看的同學可以回過去看看比較運算符這一章,比較運算符說白了,其實就是我們數學當中的比大小的大於號小於號等於號而已,最多加了個』!=『,意思是非等於也就是我們說的不等於的不等號。
那麼這麼一講同學們再回去看看剛才的代碼,是不是發現,user=='男生'後面帶了個小小的冒號呢?那有的同學又說了,老師,else後面沒有判斷語句啊,那他為啥有,他是充錢玩家?NO NO NO,else雖然後面沒有判斷語句,但是他也是要有冒號滴,這是黨的硬性規定,不明白的回去好好翻翻黨章。開玩笑的,其實else後面加冒號就跟1+1=2一樣,大家能告訴我為啥1+1=2嗎?其實都是一樣的道理。並且還有一點必須強調注意:if後面必須加判斷語句,而else後面除了冒號,啥也不能加,判斷語句也不能加,這也是python的語法。
當然,今天我們也只是說判斷語句後面必須加冒號,但並沒有說其他的特殊的代碼不能加,這個就放到以後遇到了跟大家說明標註一下。
空格
那麼空格又是什麼語法呢?什麼情況下應該加空格,而什麼情況下不加空格,其實我覺得加不加空格這個語法,是最容易理解的,至少在我看來是如此。
那大家會看到,在上面代碼當中,只有兩行代碼加了空格,,一個是』print('進入男廁所')『,另外一個是』print('進入女廁所')『,這兩行代碼有一個共同點就是:他們都是判斷下的結果。
』print('進入男廁所')『,是程序判斷到用戶輸入了』男生『並且跟我們預先設置的』男生『字符串匹配成功後出現的結果,既然是user=='男生':匹配成功後的結果,那理當在他的判斷下空四格,表示進入男廁所這個結果是user=='男生':的匹配成功後幹的事兒。那麼進入女廁所也是同樣的道理,我就不多做贅述了。
if....elif.....else語句
先跟大家解釋一下elif,是else與if的結合體,縮寫為elif,意思是:否則如果。
那麼有的運行過程序的同學同樣會發現一件事情就是,我們如果輸入』男生『,那麼程序會告訴我們,進入男廁所,但是如果我是女士,我不論輸入什麼話,他都會出現,進入女廁所。哪怕我們輸入『奧裡給』他也會說,進入女廁所,那作為一個程序來說他是很不嚴謹的,甚至我們可以認為這是個bug,既然是bug,那我們就需要想辦法修復他。這個時候就用到我們的if....elif.....else語句了。
經常聽雞湯文的同學可能聽過這麼一句話:這個世界不是非黑即白的。這句話在我們if....elif.....else語句裡面體現的淋漓盡致。而if.....else語句是典型的非黑即白,不是if就是else,反正兩個判斷結果我佔一個。但是if....elif.....else語句出現了中庸之道。
我們程序說,只要你不輸男生,哪怕你輸入個『男』而非『男生』,我都會輸出進入女廁所這句話。那這怎麼辦啊?看下面這段代碼:
# 讓用戶輸入他的性別,
並將用戶輸入的性別存進'user'這個變量名中
user=input('請輸入你的性別:')# 進行判斷:如果用戶輸入的是'男生'if user=='男生':# 輸出,進入男廁所 print('進入男廁所') # 否則如果用戶輸入的是'女生'
elif user=='女生':
# 輸出,進入女廁所
print('進入女廁所') # 否則else: # 輸出,不要亂輸哦 print('不要亂輸哦')
其實看完這段代碼我相信大部分同學都已經能看明白了,如果用戶輸入的是』男生『,那麼程序輸出,進入男廁所,否則如果用戶輸入』女生『,則輸出進入女廁所,否則直接告訴用戶不要亂輸哦。
那麼需要注意的是:elif跟if一樣,也是必須要在後面加判斷語句,而且是強制性的。而且elif的語句與他相對應的判斷結果必須是在if與else的中間不可以出現以elif開頭或者結尾的現象,否則就會出現語法錯誤。但是elif可以在中間出現多個elif語句,因為我們一般情況下不可能只有三個選項,也許會有很多個選項,那這個時候,我們就只能在中間有幾個選項加幾個elif了。舉個例子:如果今天是禮拜一,那麼我就去跟馬雲談談生意,否則如果今天是禮拜二,那麼我就跟迪麗熱巴去三亞遊泳,否則如果今天是禮拜三,我就去我在澳洲的私人別墅打王者榮耀,否則如果今天是禮拜四,那麼我就去跟川普談談美國疫情的事兒,否則如果今天是禮拜五,那麼我就去跟迪迦奧特曼說說保衛地球的事兒,否則我就告訴玩家不要亂輸,沒有其他安排了,那有的同學問我,為啥沒有周六周天對不起因為我實在編不下去了。
課後練習
在我們生活當中,有許多同學因為自己的體重發愁,有的人怎麼吃都吃不胖,有的人卻喝口水都長肉,那我們如何去用最科學的方式來定義自己是胖是瘦呢?在我們國際慣例當中,有一個值叫BMI值,這個BMI值就是用最科學的方式來計算我們身材的胖瘦的。BMI具體的計算公式就是:體重(kg)/身高(m)*身高。也就是用我們每個人的具體體重除以身高的平方。那麼如何利用BMI看胖瘦呢?看下面:
成人的BMI數值:過輕:低於18.5正常:18.5-25過重:25-28肥胖:28-32非常肥胖, 高於32
那麼接下來我們就用代碼將這個程序做出來,那麼最終效果可以參照開頭的視頻。
eval()函數
下面這個程序可能有兩個點大家不太懂,第一個是eval()函數。eval()函數其實他的作用很簡單。
我們一般情況下input()函數用戶輸入的數字,例如說用戶的體重是83公斤,那麼假如說他輸入了83,input()函數會自動將用戶輸入的83這個數字帶上引號變成字符串變量,那我們之前說過,不論是整數也好,抑或是小數也好,只要它帶上引號,那麼他就是字符串,字符串我們說是不能夠進行加減乘除這樣的數學運算的。用字符串進行加減乘除會出現語法報錯。那我們想讓用戶輸入的數字變成整數類型怎麼辦,看下面:
我們之前說過int()除了是整型類型的縮寫以外,他還是我們python當中的函數保留字,他的作用就是將帶有引號的數字強制轉換為整數,同樣的浮點數類型float()函數也是同樣的道理,意味著將字符串類型強制轉換為小數。
那麼這個時候問題來了,有的同學的體重是整數,有的同學的體重是小數,我們在input()前面加int()也不是,加float()也不是,為了數據的準確性我們只能加eval()函數,eval()函數的特性就是可以兼顧浮點數跟整數兩種類型,也就是說,我們的用戶不論輸入小數或者整數,只要有eval()函數,他都可以兼容。
BMI算法
如果經常看書的同學或者經常看類似視頻的同學一定會聽過一個詞語叫算法。那本節課我們也有一個算法是BMI算法,當然這個BMI算法是百度過來的是固定的公式。但是大家內心一定要有算法這個概念。那麼下面的代碼流程的話其實也很簡單:
第一步:讓用戶輸入他的個人數據,包括體重與身高。
第二步:然後我們將用戶輸進來的兩個參數賦值給weight與height這兩個變量名。
第三步:再將這兩個已經有值的變量名套進BMI公式。套完以後再將這個公式的最終計算答案賦值給BMI這個變量名。
第四步:利用BMI進行判斷,判斷他的計算結果的區域,再通過不同的區域,去進行具體的操作。
具體代碼如下:
weight=eval(input('輸入您的體重(kg):'))hight=eval(input('輸入您的身高(m):'))BMI=weight/hight**2if BMI>32:print('過於肥胖')elif 32>BMI>=28: print('肥胖')elif 28>BMI>=25: print('稍重')elif 25>BMI>=18.5: print('正常')elif 18.5>BMI: print('過輕')else: print('不要亂輸')
好的,這期就到這裡啦,我們下期見,拜拜!