内容正文:
教学设计
课程基本信息
学科
信息技术
年级
高二
学期
秋季
课题
第二章数组与链表 项目挑战:学校微课平台推荐功能设计
教学目标
1.理解数组和链表的区别
2. 掌握在实际项目中选择合适的数据结构
3. 掌握在数组和链表在程序中的使用
教学内容
教学重点:
1. 设计不同的推荐要求并能选用对应的数据结构(数组、链表)
2. 掌握在程序中根据实际情况,为数组和链表设计合理的数据内容
教学难点:
1. 设计有创意且实用的推荐规则
2. 根据推荐算法设计合理的数据内容
教学过程
【任务导入】
学校新建了一个微课平台,用来展示校内教师和学生自制的微课。为了更好地服务师生,学校想增加微课平台的推荐功能,即当某个用户点播了某个微课后,平台会依据一定的规则推荐相关的微课。假如你作为平台的设计者,现在需要你来开发实现这个微课平台的推荐功能。
【建模讨论】
当用户点播操作时,按照一定的推荐规则有序推荐相关的微课视频,微课点播数据涉及用户,微课名称,播放时间等。
问题1:有按照用户类型推荐,也可以按照微课类型推荐,请问还有其他推荐规则吗?
问题2:所推荐的微课用数组存放还是用链表存放?两者各有什么不同?
【设计数据的内容结构】
利用关键字查询出记录,并用字典存储关键的数据,用数组进行提炼和排序
用同样的方法也用链表进行类似的设计
【编写程序并测试】
数组法:
import pandas as pd
df=pd.read_csv("wk_click.csv")
def printdic(dic):
max1=0
for key in dic:
if len(key)>max1:
max1=len(key)
for key in dic:
print(key.rjust(max1, ' '),":",dic[key])
n=len(lst)
dic={}
types=input("输入年级")
for i in range(n):
if lst[i][1]==types:
if lst[i][2] not in dic:
dic[lst[i][2]]=1
else:
dic[lst[i][2]]+=1
printdic(dic)
menu=[[0,0]]*4
for i in range(4):
for key,values in dic.items():
if dic[key]>menu[i][1] and [key,values] not in menu:
menu[i]=[key,values]
print(menu)
输出展示 略
menu=[]
head=0;p=1
n=len(dic)
cnt=0
#构建无序链表
for key,values in dic.items():
menu.append([key,values,p])
p+=1
menu[-1][2]=-1
print(dic)
def rclnk(lst,head,n):
i=1
while lst[head][2]!=-1 and i<n:
print(lst[head],end="→")
head=lst[head][2]
i+=1
lst[head][2]=-1
print(lst[head],end="→")
print("None")
#利用链表进行插入排序
def linksort(lst):
head=0;cur=lst[head][2]
pre=head
while cur!=-1:
lst[pre][2]=-1
p=head;nt=lst[cur][2]
v=lst[cur][1]
if v>lst[head][1]:
lst[cur][2]=head
head=cur
else:
while v<=lst[p][1] and p!=-1:
q=p
p=lst[p][2]
lst[q][2]=cur
lst[cur][2]=p