本節書摘來自華章計算機《python語言程式設計》一書中的第3章,第3.4節,作者:[美]梁勇(y. daniel liang) 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
現在,我們來看一個使用本節所講的特性的示例程式。假如你想開發一個程式将一定數量的錢分類成幾個更小貨币單元。該程式讓使用者輸入總金額,這是一個用美元和美分表示的浮點值,然後輸出一個報告,羅列出等價的貨币:美元、兩角五分硬币、一角硬币、五分硬币以及美分個數,如示例運作所示。
你的程式應該報告最大數目的美元,然後依次是二角五分硬币、一角硬币、五分硬币以及美分個數,這樣就得到最小量的硬币。
下面是編寫這個程式的步驟:
1)提示使用者輸入一個十進制帶小數點的數字,例如:11.56。
2)将錢數(11.56)轉換成分數(1156)。
3)将分數除以100得到美元個數。使用分數%100得到餘數即是剩餘的分數。
4)将剩餘的分數除以25得到兩角五分硬币的個數。使用分數%25得到餘數即是剩餘的分數。
5)将剩餘的分數除以10得到一角硬币的個數。使用分數%10得到餘數即是剩餘的分數。
6)将剩餘的分數除以5得到五分硬币的個數。使用分數%5得到餘數即是剩餘的分數。
7)剩餘的分數就是一美分硬币數。
8)顯示結果。
完整的程式如程式清單3-4 所示。
程式清單3-4 computechange.py

變量amount存儲的是來自控制台的變量(第2行)。這個變量保持不變,因為amount必須在程式的結尾顯示結果。程式引入一個變量remainingamount(第5行)以存儲變化的remainingamount。
變量amount是一個浮點數,代表的是美元和美分。它被轉換為一個表示美分的整型變量remainingamount。例如:如果amount為11.56,那麼remainingamount的初始值是1156。1156//100是11(第8行)。求餘運算符得到除法的餘數。是以,1156%100=56(第9行)。
這個程式是從remainingamount中提取出最大數目的兩角五分硬币,然後獲得一個新的remainingamount(第12~13行)。持續相同的過程,程式就可以在剩餘數目中得到一角硬币、五分硬币和美分的最大數目。
如示例運作所示,結果中顯示:0個一角硬币、1個五分硬币和1個美分。如果不顯示0個一角硬币而隻是顯示1個五分硬币和1個美分的話就更好了。你将在下一章學習如何使用選擇語句修改這個程式(參見程式設計題4.7)。
警告:這個例子涉及的一個嚴重問題是在将一個浮點數轉換成整型remainingamount的時候可能會損失精度。這就可能導緻一個不準确的結果。如果你試圖輸入10.03,10.03*100可能是1003.999 999 999 999 9。你就會發現程式最終結果為10美元和2美分。為了解決這個問題,輸入用美分表示的整型數值(參見程式設計題3.8)。