Python設計BMI值計算器:資料類型轉換及int、round函數

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

一、BMI值計算器

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

二、輸入身高體重

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

三、資料類型錯誤

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

四、int轉換資料類型

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

五、ValueError錯誤

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

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

六、Python round函數

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

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

七、Python BMI計算器

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

八、大寫函數測試

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

Excel、VBA、Python比較

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

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

相關文章