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

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

(一)實驗目的

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

(二)基本思路

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

(三)編程步驟

(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,要注意避免哦!

主站蜘蛛池模板: 茶陵县| 灯塔市| 宾阳县| 怀化市| 海淀区| 女性| 克东县| 夏津县| 灌阳县| 宜丰县| 龙陵县| 偏关县| 博爱县| 富源县| 台江县| 昭平县| 无棣县| 黑龙江省| 济南市| 军事| 彰化市| 同江市| 乌海市| 宁明县| 崇文区| 桂平市| 平和县| 台南市| 丹巴县| 余干县| 随州市| 高平市| 封开县| 七台河市| 唐海县| 定边县| 余干县| 荆门市| 馆陶县| 固镇县| 肃南|