Python BMI計算公式:資料類型及函數轉換的程式碼

Python設計程式應該注意資料類型的不同,必要時利用函數轉換,另外也要謹記函數必須小寫不能大寫,本文以簡單的BMI值計算器為例,介紹int及round函數用法。

一、BMI值計算器

參考國軍人才招募中心網站上關於BMI值的計算說明,體重單位是公斤,身高單位是公尺,例如52公斤、身高155公分,BMI值是52÷(1.55X1.55)=21.6。

Python BMI計算公式:資料類型及函數轉換的程式碼 1

二、輸入身高體重

簡單設計Python程式,H及W分別是利用input輸入身高及體重,接著以數學式計算BMI值最後將BMI列印顯示出來。

Python BMI計算公式:資料類型及函數轉換的程式碼 3

三、資料類型錯誤

跳出IDLE Shell執行視窗,輸入身高體重之後,沒想到跳出了「TypeError」錯誤,後面的說明大概是文字無法執行計算,「str」通常在程式裡指的是string字串或文字的意思,如此側面可知Python的input函數會得到文字類型資料,這一點其實也合乎電腦鍵盤輸入的直覺。

Python BMI計算公式:資料類型及函數轉換的程式碼 5

四、int轉換資料類型

瞭解了錯誤原因,解決方法是看能不能轉換資料型態,也就是這裡看到的int函數,它作用便是將文字轉換成數值,int是integer整數的意思。

Python BMI計算公式:資料類型及函數轉換的程式碼 7

五、ValueError錯誤

再次執行程式,再次跳出錯誤!這次錯誤型態是「ValueError」,這裡提到不合規範(invalid)及十進位(with base 10)。要嘗試瞭解這個錯誤,首先要知道Python int函數有兩個作用,取整數或者將文字轉換成數字,取整數的話「1.55」其實是文字,將文字數換的話「1.55」又不是整數,兩條路都行不通,於是Python乾脆放棄報錯。

附帶一提,int函數其實還有第三種作用,如果括號後面有第二個參數,則是二進制十進制的轉換,這算是比較純粹程式語言的內容了,在此先補充到這裡。

Python BMI計算公式:資料類型及函數轉換的程式碼 9

六、Python round函數

再次修改程式,為了避免出錯,特別在input將單位加上去,輸入公分通常就會是整數,後面再將公分除以100,。注意到程式同時使用了round函數,因為希望計算出來的BMI值取到小數點後面一位數就好了。

這裡還多一行註解說明不能是ROUND,Python必須嚴格區分大小寫,所以不僅僅是round,其他的input和int都是一樣狀況,像這樣確定是否嚴格區分大小寫,是一般在學習一門新程式言有必要基礎瞭解的。

Python BMI計算公式:資料類型及函數轉換的程式碼 11

七、Python BMI計算器

再次執行程式,身高155,體重52,執行成功得到了BMI值21.6。

Python BMI計算公式:資料類型及函數轉換的程式碼 13

八、大寫函數測試

不管是在學習程式的階段或者設計實際商業專案,簡單的測試程式都是良好的習慣,例如在這裡可以試看看第六步驟所提到的大小寫的狀況,實際執行執行測試,Python會反映「’ROUND’ is not defined.」。

Python BMI計算公式:資料類型及函數轉換的程式碼 15

Excel、VBA、Python比較

這篇文章的Python範例程式是BMI值計算器,不過其實重點是介紹一般程式語言裡資料類型定義及使用的重要性,在簡單程式如此,複雜程式更是要留心注意。各位讀者如果熟悉Excel和VBA也可以做個比較,在Excel和VBA也是有區分文字跟數值,只不過在輸入文字或數字會儘可能自動偵錯修正,而且不管在Excel或者VBA,設計函數公式時不用區分大小寫,就算輸入小寫也會自動幫忙轉換成大寫,相較Python而言是Excel和VBA親民許多。

最後補充,在Excel和VBA也有input、int、round等函數,所以在接觸Python會覺得很親切,不過應該反過來說,更早期其他的「自然」程式語言其實就有這些固定函數語法被開發出來,Excel、VBA、Python是延用了先前程式慣例。

每天學習,每天充電:Python系列文章

Python BMI計算公式:資料類型及函數轉換的程式碼 17
歡迎加入Line社群,口袋裡的VBA小教室!
Ask ChatGPT
Set ChatGPT API key
Find your Secret API key in your ChatGPT User settings and paste it here to connect ChatGPT with your Tutor LMS website.