商务分析方法与工具(二):Python的趣味快捷-序列结构解决电影推荐

本文详细介绍了如何通过Python的列表、元组、字典和集合等数据结构,进行电影推荐实验,包括随机数生成、切片操作、成绩统计、字典交互和电影推荐算法。同时,文章还记录了实验过程中遇到的问题及解决问题后的体会。
摘要由CSDN通过智能技术生成

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!

喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!

目录

商务分析方法与工具(二):Python的趣味快捷-序列结构解决电影推荐

一、实验目的

1.掌握Python中的列表和元组的使用方法

2.掌握Python中的字典、集合以及其他常见数据结构的使用方法

二 、实验准备

练习教材第3章的程序代码(另存为WORD)

三、实验内容

1. 编写程序,生成包含1000个0—100之间的随机整数,并统计每个元素的出现次数(分别用集合和字典来进行次数的统计)

2.编写程序,用户输入一个列表和两个整数作为下标,然后使用切片获取并输出列表中借阅介于两个下标之间的元素组成的子列表。例如,用户输入[1,2,3,4,5,6] 和2、5,程序输出[3,4,5,6]

3.编写程序生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列

4.成绩统计分析:有10名同学的python课程成绩分别为:94, 89, 96, 88, 92, 86, 69, 95, 78, 85,利用列表分析成绩,输出平均值、最高的3个成绩和最低的3个成绩

5.设计一个字典,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不在,则输出“你输入的键不存在”

6.设计程序:假设已有若干用户名字及其喜欢的电影清单,现有某用户,已看过并喜欢一些电影,现在想找个新电影看看,又不知道看什么好。请推荐电影。(代码见教材)

四、实验代码和过程

1. 编写程序,生成包含1000个0—100之间的随机整数,并统计每个元素的出现次数(分别用集合和字典来进行次数的统计)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.编写程序,用户输入一个列表和两个整数作为下标,然后使用切片获取并输出列表中借阅介于两个下标之间的元素组成的子列表。例如,用户输入[1,2,3,4,5,6] 和2、5,程序输出[3,4,5,6]

在这里插入图片描述
在这里插入图片描述

3.编写程序生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列

在这里插入图片描述
在这里插入图片描述

4.成绩统计分析:有10名同学的python课程成绩分别为:94, 89, 96, 88, 92, 86, 69, 95, 78, 85,利用列表分析成绩,输出平均值、最高的3个成绩和最低的3个成绩

在这里插入图片描述
在这里插入图片描述

5.设计一个字典,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不在,则输出“你输入的键不存在”

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.设计程序:假设已有若干用户名字及其喜欢的电影清单,现有某用户,已看过并喜欢一些电影,现在想找个新电影看看,又不知道看什么好。请推荐电影。(代码见教材)

在这里插入图片描述在这里插入图片描述

五、实验中的问题和体会

问题1:

在第1小题生成随机数中,一开始随机数模块功能分不清区间包含关系,导致结果出错,而在输出101行结果后才发现结果显示不够清晰,乱序排版影响美观,而在有序集合转换与无序字典转换时有点疑惑。

体会1:

深入学习random.randint(a,b)的用法,在结果输出时用end=‘\t’对结果进行美化排版,在集合法强制转换set()时,发现转换为的set()默认升序,因而在字典法中先给列表进行升序,效果显著。

问题2:

在第2小题进行切片操作过程中,由于知识储备不足,对于切片的使用显得有些陌生,导致切片临界值取舍不定情况。

体会2:

在查阅相关资料后,对于切片区间有了更进一步的理解,为了追求程序的互动性与趣味性,列表的输入和需求的实现都注重互动性。

问题3:

在第3小题中一开始以为将原序列深复制copy.deepcopy()两份,第一份用for循环取出前十个数进行升序操作,第二份用for循环取出后十个数进行降序操作,再将两份合并,但得到的答案有点繁杂。

体会3:

学完切片后,发现切片操作可以简化很多繁杂步骤,省去了开辟内存空间复制其他数组进行操作,也节省了时间复杂度和空间复杂度。

问题4:

在第4小题的求成绩平均分中,刚开始是采取总分除以人数的方式,但发现过程显得繁杂,尤其是for循环求和。

体会4:

在认真查找有关numpy库的内置函数numpy.mean()平均值函数后,才发现问题变得很简单,顺便也学会了求中位数的numpy.median()函数用法,而在最大三位和最小三位则采取先排序再取值的办法。

问题5:

在第5小题创建字典时采用互动性方法让用户自己输入自己创建字典的方法,但是在创建字典过程中发现双重for循环,一层是键,一层是值会导致值更新的失误。

体会5:

仔细回顾上节课学到的内建函数zip(a,b)进行键值匹配创建字典,达到了理想效果,而在查询键是否存在时采用if 语句+in的方法,最终完美解决此题。

问题6:

在第六小题上,由于题目原理理解不深,导致无从下手,花了很多时间试写出来的代码很粗糙。

体会6:

参考完标准答案后,试着去理解里面的每一处细节,虽然最后还有一些地方理解的不是很透彻,希望自己不断积累,学多了就能理解!

  • 40
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡林神不是猫

如果您觉得有帮助可以鼓励小卡哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值