内容正文:
3.2 数据与结构导学案答案及解析
第1课时:数据类型与队列
教材版本:教科版(2019)高中信息技术必修1《数据与计算》
适用年级:高一年级
说明:以下为导学案全部题目的参考答案,教师可根据学生实际作答情况灵活调整评分标准。
一、课前预习区
1. 生活思考
(学生自由作答,以下为示例)
· 购买的商品名称:"蓝牙耳机",单价:__99.00__元,数量:__1__件
· 订单中除了商品信息,还包括:收货地址、联系电话、订单编号、__下单时间__等信息
2. 知识链接(回顾旧知)
数据类型
Python中的写法
举例
整数
int
5
浮点数
float
3.14
字符串
str
"hello"
布尔型
bool
True
3. 预习困惑
(学生自由作答,以下为常见问题示例)
① 队列和列表有什么区别?
② 树结构和图结构怎么区分?
二、课堂探究区
【第1课时】探究网购订单处理——数据类型与队列
探究活动一:认识数据类型(个人独立完成)
任务1:完成“网购订单数据类型对照表”
订单数据项
示例数据
Python数据类型
判断理由
商品名称
"无线鼠标"
str(字符串)
数据被引号包裹
单价
39.90
float(浮点数)
带有小数点
数量
2
int(整数)
整数,不带小数点
是否发货
是
bool(布尔型)
只有两种状态
收货地址
"北京市海淀区……"
str(字符串)
数据被引号包裹
订单总价
79.80
float(浮点数)
带有小数点
我的发现:判断一个数据属于什么类型,可以用Python中的__type()__函数进行验证。
任务2:认识复合数据类型
复合数据类型
特点
举例
列表(list)
有序、可变
[1, 2, 3, 4]
元组(tuple)
有序、不可变
(1, 2, 3, 4)
集合(set)
无序、不重复
{1, 2, 3, 4}
字典(dict)
键值对
{"name": "小明", "age": 18}
思考:一张完整的订单(包含商品名、单价、数量、是否发货等信息),适合用哪种复合数据类型来组织?为什么?
我的答案:字典(dict)
理由:订单的各个数据项有明确的名称(如“商品名”“单价”),用字典的“键值对”方式存储,可以通过键名方便地访问对应的值,代码可读性强。
探究活动二:探究队列结构(小组合作完成)
任务3:模拟订单处理——补全代码
· 队列的特点:先进先出,英文缩写为__FIFO__。
· 队列操作示意图(学生画出类似下图即可):
入队方向(队尾) 出队方向(队首)
↓ ↓
────→ [订单A] [订单B] [订单C] ────→
· 补全代码:
python
# orders.py —— 模拟电商订单处理(队列)
order_queue = [] # 创建一个空队列
while True:
print("
当前待处理订单数:", len(order_queue))
choice = input("1-新增订单 2-处理订单 3-退出:")
if choice == '1':
order_id = input("请输入订单编号:")
# 将新订单加入队列尾部(入队操作)
order_queue.__append__(order_id) # ① 填 append
print(f"订单{order_id}已加入队列,等待处理")
elif choice == '2':
if len(order_queue) == 0:
print("队列为空,无订单可处理")
else:
# 从队列头部取出订单(出队操作)
processed = order_queue.__pop__(0) # ② 填 pop
print(f"正在处理订单:{processed}")
elif choice == '3':
print("程序结束")
break
运行测试:在Python环境中运行补全后的程序,模拟以下操作序列:
操作步骤
你的操作(输入)
程序输出结果
第1步
1 → 输入"20260101"
订单20260101已加入队列,等待处理
第2步
1 → 输入"20260102"
订单20260102已加入队列,等待处理
第3步
2
正在处理订单:20260101
第4步
2
正在处理订单:20260102
小组讨论:如果不使用队列,而使用列表的insert(0, x)方法在列表头部插入、用pop()从尾部取出,能否实现相同的“先进先出”效果?这样做有什么问题?
可以勉强实现“先进先出”效果(每插入一个元素都放在最前面,取的时候取最后一个),但效率极低——insert(0, x)每次插入都要移动列表中所有已有元素,数据量大的时候非常慢。队列的标准实现是append追加到末尾、pop(0)从头部取出。
学科网(北京)股份有限公司
$
3.2 数据与结构导学案
第1课时:数据类型与队列
教材版本:教科版(2019)高中信息技术必修1《数据与计算》
适用年级:高一年级
一、学习目标(核心素养对应)
核心素养维度 学完本课后,你应该能够:
信息意识
能从网购订单、快递派送等生活场景中识别数据类型和数据结构,感知数据中承载的信息。
计算思维
① 识别Python的简单数据类型与复合数据类型;② 理解队列“先进先出”的逻辑,能用列表实现队列操作;③ 理解树结构(一对多)和图结构(多对多)的特点,能根据实际问题选择合适的数据结构。
数字化学习与创新
利用Python编程环境、图示工具等进行自主探究与合作学习,解决实际问题。
信息社会责任
体会合理组织数据对提高信息处理效率的价值,理解数据结构在信息社会中的重要作用。
二、课前预习区
1. 生活思考
你经常网购吗?回忆一次网购经历:
· 你购买的商品名称:______,单价:______元,数量:______件
· 订单中除了商品信息,还包括:______、______、______等信息
2. 知识链接(回顾旧知)
Python中,我们学过哪些数据类型?试着填写下表:
数据类型
Python中的写法
举例
整数
______
5
浮点数
______
3.14
字符串
______
"hello"
布尔型
______
True
3. 预习困惑
预习教材第56-63页后,你有哪些疑问?
①
②
三、课堂探究区
【第1课时】探究网购订单处理——数据类型与队列
探究活动一:认识数据类型(个人独立完成)
任务1:完成“网购订单数据类型对照表”
观察教师展示的订单截图,将各数据项对应的Python数据类型填写完整。
订单数据项
示例数据
Python数据类型
判断理由
商品名称
"无线鼠标"
______
数据被引号包裹
单价
39.90
______
带有小数点
数量
2
______
整数,不带小数点
是否发货
是
______
只有两种状态
收货地址
北京市海淀区……
______
______
订单总价
79.80
______
______
我的发现:判断一个数据属于什么类型,可以用Python中的______函数进行验证。
任务2:认识复合数据类型
阅读:教材第57页“复合数据类型”相关内容,完成下表。
复合数据类型
特点
举例
列表(list)
有序、______
[1, 2, 3, 4]
元组(tuple)
有序、______
(1, 2, 3, 4)
集合(set)
无序、______
{1, 2, 3, 4}
字典(dict)
键值对
{"name": "小明", "age": 18}
思考:一张完整的订单(包含商品名、单价、数量、是否发货等信息),适合用哪种复合数据类型来组织?为什么?
我的答案:______
理由:______
探究活动二:探究队列结构(小组合作完成)
任务3:模拟订单处理——补全代码
电商平台每天产生海量订单,仓库需要按照“先下单先发货”的顺序处理。这种“先来先服务”的规则,在数据结构中对应的是队列(Queue)。
队列的特点:(请填写“先进先出”或“后进先出”),英文缩写为。
队列操作示意图(请在方框中画出队列模型,标注“入队”和“出队”方向)
│ │
│ (请在下方画出队列示意图) │
│ │
│ │
│ │
│ │
└───────────────────────────
补全代码:阅读下面的Python程序,将缺失的代码补充完整。
python
# orders.py —— 模拟电商订单处理(队列)
order_queue = [] # 创建一个空队列
while True:
print("
当前待处理订单数:", len(order_queue))
choice = input("1-新增订单 2-处理订单 3-退出:")
if choice == '1':
order_id = input("请输入订单编号:")
# 请补全:将新订单加入队列尾部(入队操作)
order_queue.______(order_id) # ① 填什么方法?
print(f"订单{order_id}已加入队列,等待处理")
elif choice == '2':
if len(order_queue) == 0:
print("队列为空,无订单可处理")
else:
# 请补全:从队列头部取出订单(出队操作)
processed = order_queue.______(0) # ② 填什么方法?
print(f"正在处理订单:{processed}")
elif choice == '3':
print("程序结束")
break
运行测试:在Python环境中运行补全后的程序,模拟以下操作序列:
操作步骤
你的操作(输入)
程序输出结果
第1步
1 → 输入"20260101"
______
第2步
1 → 输入"20260102"
______
第3步
2
______
第4步
2
______
小组讨论:如果不使用队列,而使用列表的insert(0, x)方法在列表头部插入、用pop()从尾部取出,能否实现相同的“先进先出”效果?这样做有什么问题?
学科网(北京)股份有限公司
$