Appinventor笔记5-列表块
1.列表基础练习
完成以下列表基础块程序
实现思路:
- 初始化数据:先定义全局列表,一维列表
list1
存[18,54,68,45,33,26,18]
,二维列表list2
存嵌套数据(如[["李华",68],["王芳芳",103],...]
),为后续操作提供数据源。 - 一维列表取值:点击对应按钮时,获取文本输入框中输入的索引值,从
list1
中提取该索引对应的列表项,将结果显示在指定标签上(如输入索引 1,取list1
中第 2 个元素 18)。 - 二维列表取值:点击按钮后,获取输入的行索引和列索引,先从
list2
中选行索引对应的子列表,再从子列表中选列索引对应的元素,显示结果(如行 1、列 2,取对应子列表中第 3 个元素 “李华”)。 - 列表项位置查找:一维列表查找时,输入目标值,调用 “求对象在列表中位置” 功能,返回其在
list1
中的索引;二维列表查找时,遍历list2
的子列表,若子列表含目标值,记录子列表索引和目标值在子列表中的索引,以[行索引,列索引]
形式显示。 - 一维列表包含判断:输入目标值,调用 “检查列表是否含对象” 功能,若
list1
含该值,显示true
,否则显示false
。
2.列表综合应用
1.有如下混合数据的列表,编程统计各种类型数据的个数。
[“abc”, 23, “N/A”, true, 100, 0.2, “txt”, 50, false]//真
实现思路:
- 初始化计数器:定义全局变量
number
(数字计数)、string
(字符串计数)、boolean
(布尔值计数),初始值均为 0。 - 遍历判断与计数:点击按钮后,先重置计数器为 0,再遍历混合列表
["abc",23,"N/A",true,100,0.2,"txt",50,false]
。对每个元素,先判断是否为布尔值(true
/false
),是则boolean
加 1;否则判断是否为数字(整数 / 小数),是则number
加 1;剩余归为字符串,string
加 1。 - 结果显示:将
number
、string
、boolean
的最终值分别显示在对应标签上(如最终显示数字 4、字符串 3、布尔值 2)
2. 如下是几名同学的课程成绩,请将同学们的成绩用列表进行表示。现在要将同学们的成绩按照比例提分(1.1倍),请显示出提分后的新列表,并计算出提分后的总分和平均成绩。
姓名 | 成绩 |
小张 | 85 |
小王 | 65 |
小李 | 70 |
小赵 | 不及格 |
小刘 | 80 |
小孙 | 休学 |
实现思路:
- 数据准备:构建学生成绩列表
[85,65,70,"不及格",80,"休学"]
,区分有效数字成绩与无效文本(“不及格”“休学”)。 - 成绩提分:遍历列表,对每个元素判断是否为数字,是则乘以 1.1(按比例提分),保留文本元素不变,生成提分后新列表并显示。
- 总分与平均分计算:先过滤列表,仅保留数字成绩(剔除文本元素);计算过滤后列表的总和(用 “累加” 功能,初始值 0,依次加每个数字);再用 “求列表长度” 获取有效成绩个数,平均分 = 总分 / 个数,最后显示总分与平均分。
3. 冒泡排序
编程实现冒泡排序算法
实现思路:
- 初始化数据:定义全局列表
L1
(待排序数据,如[30,78,99,15]
)、n
(列表长度,初始为L1
长度)、i
(外层循环变量)、j
(内层循环变量)、temp
(临时变量,用于交换元素)。 - 双层循环排序:点击按钮后,外层循环
i
从 0 到n-2
:内层循环j
从 0 到n-2-i
,比较L1[j]
和L1[j+1]
,若L1[j] > L1[j+1]
,用temp
交换两者位置(temp=L1[j]
,L1[j]=L1[j+1]
,L1[j+1]=temp
)。 - 结果显示:每轮排序后可实时显示列表状态,全部循环结束后,显示最终排序后的列表(如
[15,30,78,99]
)。