第五課:震驚!國外專家研究幾十年的體脂率算法居然被陝西一男子十分鐘做出來了!

2021-02-22 東東老師講編程

今天這節課我們來做一個微小型項目:體脂率計算器。先給大家展示一下成品效果看一下。


if.else語句

if翻譯過來就是如果,那麼else翻譯為中文就是否則。我們經常說程序這個詞語,其實從廣義上來講,程序無非就因果關係罷了。也就是我們這節課要講的ifelse語句。可能有的同學還很蒙,啥意思啊?舉個簡單的例子:如果我是男生,我就去男廁所,否則,我就去女廁所。我相信大部分同學都能明白我說的這句話。那麼如果把這句話翻譯成代碼,那該如何翻譯呢?來看下面代碼:

# 讓用戶輸入他的性別,並將用戶輸入的性別

存進'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....elifelse語句


先跟大家解釋一下elif,是else與if的結合體,縮寫為elif,意思是:否則如果。


那麼有的運行過程序的同學同樣會發現一件事情就是,我們如果輸入』男生『,那麼程序會告訴我們,進入男廁所,但是如果我是女士,我不論輸入什麼話,他都會出現,進入女廁所。哪怕我們輸入『奧裡給』他也會說,進入女廁所,那作為一個程序來說他是很不嚴謹的,甚至我們可以認為這是個bug,既然是bug,那我們就需要想辦法修復他。這個時候就用到我們的if....elifelse語句了。

經常聽雞湯文的同學可能聽過這麼一句話:這個世界不是非黑即白的。這句話在我們if....elifelse語句裡面體現的淋漓盡致。而ifelse語句是典型的非黑即白,不是if就是else,反正兩個判斷結果我佔一個。但是if....elifelse語句出現了中庸之道。

我們程序說,只要你不輸男生,哪怕你輸入個『男』而非『男生』,我都會輸出進入女廁所這句話。那這怎麼辦啊?看下面這段代碼:

# 讓用戶輸入他的性別,

並將用戶輸入的性別存進'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**2
if 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('不要亂輸')

好的,這期就到這裡啦,我們下期見,拜拜!

相關焦點

  • 體脂率的那些事:如何計算 如何降低體脂率?
    一、怎麼算體脂率一般健身房一般都有體脂率測試儀,想要更精確可以去醫院做個測試。
  • 自測:你的體脂率多少?如何知道你的骨架大小?
    (僅做參考)想要知道自己的骨架是大是小,有兩種方法。這兩種方法雖然不夠精確,無法符合所有人的情況,不過足夠簡便,值得參考。一是圈手法:用大拇指和中指圈住另一隻手的手腕,兩隻手指頭沒法相碰為大骨架,剛好相碰為中骨架,相疊超過一個指甲寬為小骨架。注意要沿著手腕上突起的骨頭圈過去。這個部位皮下脂肪少,比較適合用於評估。
  • 減脂乾貨:如何常年保持低體脂,讓肌肉血管爆出來!
    健身,大部分人都會有一個感覺,無論是在國內還是國外,我們會發現很多健身大咖們平時的體脂很高。
  • 健身達人:斯巴達一樣的身材,44歲金鐘國肌肉照曝光,體脂率8.5%絕了
    而金鐘國之所以這麼健壯,與他每天運動的強度脫不了關係,45歲的他運動健身已有21年了,如今的他每天所做的運動量依舊很強,不得不佩服他能有這般的毅力,這身材迷倒了萬千少女,圈粉無數。當談到金鐘國為何運動健身時,他坦言到:最初僅僅是為了努力做肌肉訓練,由於他在高中時因腰痛昏倒後被確診為嚴重性的脊柱側凸,而彎曲的脊椎需用某類東西來支撐著。
  • 女性體脂:怎樣的體型才是好的體型?
    10-12%體脂10-12%的體脂對於女性來說屬於過低,通常只有專業的健美運動員才會特意達到並保持。一般來說10-12%的體脂含量既不必要也不健康,甚至不安全。女性在這個體脂水平因為荷爾蒙的變化很可能大多數已經沒有月經了。這種程度下女性的肌肉會非常明顯,渾身上下各部位線條清晰,如果鍛鍊的好的話,6塊腹肌非常清楚。途中女子應該是在12%稍多,因為其肌肉看起來還沒有「過分」的明顯。
  • 計算機視覺:從入門到精通,極限剖析圖像識別學習算法
    ,特徵提取及匹配知識點:Sift,視覺和圖像變換, 邊緣檢測算法等第三課:實踐:利用KNN算法和OpenCV進行手寫字符識別階段2: 創建自己的圖像識別神經網絡第四課:>深入理解神經網絡的前向傳遞和反向傳播及其物理意義知識點:Loss function,交叉熵代價函數,梯度下降法求導第五課:訓練你自己的網絡,重點為調參和工作中用到的一些技巧知識點:Loss function,交叉熵代價函數,梯度下降法
  • 探秘:基礎代謝真的會影響體脂嗎?
    最新研究甚至顯示,即使人們已經很久沒有節食,它造成的基礎代謝水平的下降還是會持續很長一段時間。基礎代謝水平下降會產生不良後果:在一項著名的研究中人們發現,基礎代謝水平低的人中有30%的人會在4年內增重10千克,而基礎代謝水平高的人中只有5%的會出現這種情況。換句話說,基礎代謝水平高的人可以避免不必要的體脂增長。
  • 陳意涵:體脂11%的軟妹子,還有什麼運動是你不會的嗎?
    很多年過去了,陳意涵還是長得甜,還是娃娃音,嬌小的她看起來依舊惹人憐愛,像個十足的軟妹。可事實上,以上描述只是我們的錯覺。你相信她其實是個體脂只有11%,一次能跑十幾公裡,一分鐘做57個仰臥起坐,還會倒立的運動全能王嗎?
  • 好課資源共享:像MBB諮詢顧問一樣做商業分析
    ■每周更新幾十種課程,全網課程應有盡有.   像MBB諮詢顧問一樣做商業分析項錦晶 2015 表達性藝術-繪畫技術與心理投射基礎課程3天現場課程錄音享學課題java架構師二期三期 二期45,三期160享學課堂-數據結構與算法精品課 80詳情頁心裡學香蕉公社-緩慢先生養成計劃香蕉公社-床上硬漢養成計劃香蕉公社
  • 臺灣醫院研究:糖尿病人打太極拳3~6個月可減藥量
    ——亞里斯多德研究發現,打太極拳不僅可增強心肺耐力及下肢肌力,高血壓、糖尿病人練3至6個月後,甚至可減少用藥量,湖南糖尿病診療專家鼓勵中老年人,沒事不妨多練拳。這是專家推薦給中老年人的最佳健身運動。這項由臺灣醫院復健部所做的太極拳健身研究,有90名64歲的中年人及76名65-80歲的老年人參與,分為太極拳組和不運動的對照組,其中太極拳組練習太極拳平均達五年以上。結果測量兩組心肺耐力發現,有打拳習慣的中年男性,最大攝氧量較同齡者增加29%,女性則增加15%;而有打拳習慣的老年人,最大攝氧量也較同齡者多出18%至19%。
  • 老呂打遊戲:《第五人格》
    《第五人格》的基本規則我一上手就學會了。然而,這不是人人都具備的本能,比如——我的老母親「陳大姐」。她平常為了消除代溝,拉近跟我的距離,老是打聽我在聽什麼歌,關注什麼公眾號,玩什麼遊戲。她甚至表達了想跟我學遊戲的願望,我熱血來潮,決定教她打第五人格,終於有徒弟了!陳大姐可是一個聰慧至極,一點就通的人,可能不到一個月我們就能組隊打排位賽。
  • 深度研究:敏感性、特異性、精確率、召回率
    當這兩個世界相遇時,即當一個醫學測試是一個機器學習模型時,這種差異可能會在醫學界和從事數據科學研究的人員之間造成許多誤解。2定義來,讓我們看看如下這些定義:這些定義非常簡單,然而,當我試圖理解它們的組合對我的算法意味著什麼時,我發現自己很困惑。精確率、召回率、敏感性的每一個組合都是可能的嗎? 在什麼情況下,是不對的?如果這有幫助,當陽性標籤被定義為陰性,陰性標籤為陽性時,你可以將特異性稱為對同一問題的召回率。為了更好地理解,我創建了 8 個不同的分類問題和分類器。
  • 陝西考古發現中國迄今最早男性化妝品:基於牛脂用於美白
    中國科學家團隊最新完成的一項考古研究——對陝西一處春秋時期遺址男性貴族墓出土的微型銅罐內殘留物進行綜合分析,發現該殘留物由牛脂作為基質混合一水碳酸鈣顆粒,為美白化妝品。這既是中國迄今最早的男性化妝品,也是中國已知最早的面脂,將中國先民製作美容面脂的歷史提前1000多年。中國科學院大學(國科大)人文學院考古學與人類學系楊益民教授課題組近期與陝西省考古研究院等合作,研究成果論文近日在國際專業期刊《科技考古》在線發表。圖為2月4日下午,科研人員在北京的實驗室展示研究樣品。
  • 專家稱:「陰莖也要勤鍛鍊」男子陰莖圖片據國外的一項研究表明,長期習慣坐著工作的男子
  • 想一個月搞定面試算法?來《九章算法班》!第一節免費試聽!
    課程安排:本課程為網絡直播課,每節2小時,共9節,第一節免費試聽。報名網址:http://t.cn/RGXh6fg, 或猛戳「閱讀原文」報名。想尋找北美software engineer職位的同學。想接受系統的面試算法培訓的同學,或想換工作的但是算法比較薄弱的工程師。0算法基礎即可參與學習。
  • 柳葉刀子刊:我國學者開發檢測口腔癌深度算法,通過手機APP檢測,準確率98%
    在口腔腫瘤專科醫生處就診的口腔癌患者中,60%已為中晚期,而發現及時並經過正規治療的早期口腔癌患者的治癒率能達到84%。因此「早發現,早治療」是提升口腔癌治癒率的關鍵。早期發生在口腔內的黏膜紅斑,白斑,潰瘍和糜爛等,往往因為「無痛不癢」使得患者乃至非專科醫生放鬆警惕,而這些異常徵象在口腔腫瘤專家眼裡卻釋放著「癌症」的危險信號。
  • 高蛋白早餐:降低體脂肪
    國外研究發現,體重過重青少年吃高蛋白早餐,可以穩定血糖、體脂肪也跟著下降。國外研究指出,早餐吃高蛋白質食物如蛋、瘦肉、牛奶,有助增加飽足感、減少體脂肪。塑身減重的風氣盛行,就讀國、高中的青少年也一樣愛漂亮,總是無法容忍身上的多餘脂肪。想要健康瘦身,每天吃早餐就是一個不錯的方法!不過,早餐百百種,怎麼吃才能兼顧營養和身材?
  • 日本專家發現:魚油能將貯脂細胞轉化為燃脂細胞
    但是最新研究發現,水產品在降低體重方面也有著重要作用。日本學者研究發現,魚油能將貯脂細胞轉化為燃脂細胞。燃脂細胞能夠幫助對抗肥胖,但是隨著年齡的增長,燃脂細胞在人體內的含量逐漸減少。白色脂肪細胞是肥胖背後的元兇,它儲存的多餘能量如果不及時消耗的話會引起遊泳圈和啤酒肚。另一方面,棕色脂肪細胞則主要是進行燃燒脂肪,產生熱量,保持身體暖和。