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

二、動手練:找出最大值和最小值

(一)實驗目的

用列表保存數據,并計算出最大值和最小值。

(二)基本思路

先初始化最大值和最小值,然后和每一項逐個比較,在比較過程中進行更新。

(三)編程步驟

(1)角色設計

我們采用默認角色小貓。

(2)變量設計

  • 列表num:保存輸入的數據。
  • 變量max:記錄列表保存數據的最大值。
  • 變量yu:表示項的序號。

(3)過程描述與腳本展示

首先,我們初始化max:只考慮第1項和第2項,我們做一次比較,就很容易知道哪個大,把大的那一項賦給max

然后,我們從第3項開始,每一項都和max比一比,如果比max大,就更新max的值(見圖8-3)。

085-1

圖8-3 找出最大值的程序,左側為原始有bug的版本,右側為改進版

(四)實驗結果

我們嘗試構造了不同的列表,長度不同,內容也不同,結果都正確(見表8-1)。

表8-1 找最大值程序的實驗結果示例

085-2

當前這種max初始化方法要求列表中至少有2項,如果列表中只有1項的話,程序會出bug。一種改進方法是:預先判斷一下有幾項,當只有1項時直接返回第1項,是空表時則報錯。

另外,在用戶輸入數據時,循環的控制條件是“重復執行回答次”,而循環體內又更新了“回答”,會導致“重復執行回答-2次”時循環次數出錯。比如用戶輸入6個數,分別是7,8,9,10,11,3,最后一次“回答”是3,因此程序只會執行“3-2次,即1次循環,導致錯誤地輸出“最大值是9”。改正方式是另外創建一個變量,表示“多少個數”。修正bug之后的版本如圖8-3中右側部分所示。

(五)思考與延伸

(1)你可以想一想有沒有更多關于列表的題目?

比如,2020年哪些天是星期日?這個題目是不是也可以用列表來算呢?只是比較復雜,我們在以后的課程中可能會學到哦!

(2)為什么一定要用列表?什么時候不用列表就不行?

我們認為有些情況不用列表也是可以的,但是會特別麻煩,因為需要創建很多變量,做起來會有很大難度。而且不用列表的話,很容易在編程中混淆不同的變量,產生一些錯誤。

還有一些情況,是根本無法用變量來解決的。比如我們這節課要詢問“有幾個數”,這時數是事先不確定的,也就是說變量的數目不確定,那怎么創建變量呢?這種情況就只能用列表啦!

(3)如果一個列表中存了10個數字,但是去除第11項,會發生什么呢?

試一下就知道列表不會發生變化,這是因為列表中沒有第11項,所以本來想刪除的那一項就不會被刪除。不過這樣做可是不安全的,會對后面的計算產生bug,要注意避免哦!

主站蜘蛛池模板: 英吉沙县| 易门县| 读书| 弥勒县| 武乡县| 成武县| 利津县| 肥城市| 常熟市| 通河县| 遵义市| 南投市| 信阳市| 鄢陵县| 故城县| 册亨县| 永定县| 温泉县| 郎溪县| 多伦县| 色达县| 镇平县| 探索| 镇雄县| 木兰县| 嘉义县| 定南县| 柳江县| 满洲里市| 磐石市| 陆河县| 新化县| 南华县| 湾仔区| 汉沽区| 东乡县| 民权县| 新乡市| 小金县| 昌都县| 保德县|