- 少兒計算思維養成記:六個孩子的編程學習筆記
- 包若寧等編著
- 972字
- 2022-04-24 09:43:45
二、動手練:找出最大值和最小值
(一)實驗目的
用列表保存數據,并計算出最大值和最小值。
(二)基本思路
先初始化最大值和最小值,然后和每一項逐個比較,在比較過程中進行更新。
(三)編程步驟
(1)角色設計
我們采用默認角色小貓。
(2)變量設計
- 列表
num
:保存輸入的數據。 - 變量
max
:記錄列表保存數據的最大值。 - 變量
yu
:表示項的序號。
(3)過程描述與腳本展示
首先,我們初始化max
:只考慮第1項和第2項,我們做一次比較,就很容易知道哪個大,把大的那一項賦給max
。
然后,我們從第3項開始,每一項都和max
比一比,如果比max
大,就更新max
的值(見圖8-3)。

圖8-3 找出最大值的程序,左側為原始有bug的版本,右側為改進版
(四)實驗結果
我們嘗試構造了不同的列表,長度不同,內容也不同,結果都正確(見表8-1)。
表8-1 找最大值程序的實驗結果示例

當前這種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,要注意避免哦!