创新实训一
一、我的任务
用户选定住宿时间(入住时间和离开时间),入住人数(具体人数),酒店的星级或者民宿,选定要去的景点或者商圈,然后根据这些信息推荐酒店,默认按照综合评分排序,用户也可以按照酒店到景点的距离远近、酒店的评分高低、点评数多少、价格高低来对这些酒店进行筛选,而综合评分是根据这些特征对酒店的综合评价。
推荐酒店时会比较多家酒店订购网站上的价格,显示最低价格,点击进入详情页面,可以查看到各大酒店订购网站的具体价格,用户可以在该页面直接进入选中的酒店订购网站进行预订。
二、初步设计算法
由于我的任务主要是负责酒店推荐算法,不考虑数据获取,那么我先自行设计一个数组,数组内容为酒店信息,包括酒店名称,距离选定地点的距离,评分,评论数,价格,星级,位置等。将这些数据进行排序,分别按照距离远近,评分高低,评论数量,价格高低进行排序。
# 创新项目实训
# 比价&酒店推荐系统
# 住宿查询
# 用户选定住宿时间(入住时间和离开时间),入住人数(具体人数),酒店的星级或者民宿,
# 选定要去的景点或者商圈,然后根据这些信息推荐酒店,默认按照综合评分排序,
# 用户也可以按照酒店到景点的距离远近、酒店的评分高低、点评数多少、价格高低来对这些酒店进行筛选,
# 而综合评分是根据这些特征对酒店的综合评价。
# 推荐酒店时会比较多家酒店订购网站上的价格,显示最低价格,
# 点击进入详情页面,可以查看到各大酒店订购网站的具体价格,
# 用户可以在该页面直接进入选中的酒店订购网站进行预订。
import copy
#定义一个初始测试数据集——数组
#选择地点后,得到该地区的酒店实时信息
testdata=[[], #酒店名称
[], #酒店距离选定地点的距离
[], #酒店评分
[], #酒店评论数
[], #酒店房间最低价格(根据人数推荐,如果是一个人,优先推荐单间,两个人及以上优先推荐标准双人间
[], #星级
[] #位置
]
#将testdata进行转置
#定义排序算法,根据评分,价格,评论数,距离远近排序
#根据酒店距离选定地点的远近进行排序,按照距离升序排序
def sort_distance(testdata):
copydata=copy.deepcopy(testdata) #深度拷贝测试数组,对拷贝数组进行操作
for i in range(len(copydata)-1):
for i in range(len(copydata)-1):
temp=copydata[i];
if(copydata[i][1]>copydata[i+1][1]):
copydata[i]=copydata[i+1]
copydata[i+1]=temp
return copydata
#根据评分高低进行排序
def sort_points(testdata):
copydata=copy.deepcopy(testdata) #深度拷贝测试数组,对拷贝数组进行操作
for i in range(len(copydata)-1):
for i in range(len(copydata)-1):
temp=copydata[i];
if(copydata[i][2]<copydata[i+1][2]):
copydata[i]=copydata[i+1]
copydata[i+1]=temp
return copydata
#根据评论数进行降序排列
def sort_comment(testdata):
copydata=copy.deepcopy(testdata) #深度拷贝测试数组,对拷贝数组进行操作
for i in range(len(copydata)-1):
for i in range(len(copydata)-1):
temp=copydata[i];
if(copydata[i][3]<copydata[i+1][3]):
copydata[i]=copydata[i+1]
copydata[i+1]=temp
return copydata
#根据价格高低进行降序排列
def sort_price_descend(testdata):
copydata=copy.deepcopy(testdata) #深度拷贝测试数组,对拷贝数组进行操作
for i in range(len(copydata)-1):
for i in range(len(copydata)-1):
temp=copydata[i];
if(copydata[i][4]<copydata[i+1][4]):
copydata[i]=copydata[i+1]
copydata[i+1]=temp
return copydata
#根据价格高低进行升排列
def sort_price_ascend(testdata):
copydata=copy.deepcopy(testdata) #深度拷贝测试数组,对拷贝数组进行操作
for i in range(len(copydata)-1):
for i in range(len(copydata)-1):
temp=copydata[i];
if(copydata[i][4]>copydata[i+1][4]):
copydata[i]=copydata[i+1]
copydata[i+1]=temp
return copydata