官术网_书友最值得收藏!

2.2 錯在哪?打印調試信息

小小家門口有家蛋糕店,今天打出了一個促銷廣告:購買蛋糕總價小于或等于100元時,返還10%現金;購買總價高于100元但低于200元時,低于100元的部分返還10%,高于100元的部分返還7.5%;購買總價高于200元但低于400元時,高于200元的部分返還5%;購買總價超過400元時,超過400元的部分返還3%,多買多送。小小一看,這個規則太復雜了,到底能有多少優惠,只能寫個程序來算一算了。

程序代碼如下:

選擇菜單命令Run→Run Module運行程序,輸入購買的總價,得到應返現的金額,如圖2.3所示。

圖2.3 程序運行的結果

對這個結果滿意嗎?購買總價為50元時,總優惠金額為0!顯然這個結果是錯誤的。必須通過調試來找出程序中的錯誤。

如何調試程序呢?一般可以分三個步驟:

第一步,讓程序分段運行。也就是說,一段一段地來排除錯誤,逐漸縮小抓蟲子的范圍。這就需要使用一些辦法,把程序分成一段一段的,運行一段后就停下來。

第二步,檢查程序運行到分段處時,變量的值是否正確。

第三步,確定出錯的根源在哪里,并進行修正,然后再回到第一步進行新一輪調試。

首先,小小在程序中添加了一些 print()語句,通過輸出一些有用的中間信息來判斷錯誤在哪,修改后的代碼如下:

程序運行結果如圖2.4所示。

圖2.4 輸出中間信息

通過輸出的中間信息,小小發現,當輸入10元的總價時,其應該處于0~100的區間范圍,可是程序卻定位在100以上的范圍了。通過進一步分析,發現是程序讀取的優惠范圍這里出錯了。

因此,將代碼進行如下修改:

再次運行,結果如圖2.5所示。

圖2.5 含有調試信息的程序運行結果

這個結果到底對不對?小小進行了驗算。當購買金額為10元時,返現為0.1×10=1元,正確;當購買金額為120元時,返現為0.1×100+0.075×(120-100)=11.5元,正確;當購買金額為280元時,返現為0.1×100+0.075×100+0.05×(280-200)=21.5,正確!

程序正確運行后,記得把那些調試用的print語句都去掉哦!再次編輯代碼,刪除調試用的print語句,然后,隨意運行程序吧!注意,輸入金額為0時程序會退出。

主站蜘蛛池模板: 通榆县| 古蔺县| 呼图壁县| 亚东县| 巩留县| 公主岭市| 仙桃市| 河源市| 盐亭县| 永福县| 曲水县| 水富县| 宝兴县| 南召县| 平果县| 南雄市| 高密市| 镇平县| 浑源县| 潼南县| 修水县| 锡林浩特市| 庆云县| 建宁县| 布尔津县| 云和县| 台北县| 瑞金市| 冕宁县| 巴林右旗| 祁东县| 日土县| 嘉义市| 花莲县| 集贤县| 理塘县| 丽江市| 洪雅县| 新丰县| 巫溪县| 孟州市|