20224126《Python程序设计入门》实验四报告

phobia_ 2023-05-26 20:22:20

20224126 《Python程序设计入门》实验四报告
课程:《Python程序设计入门》
班级: 2241
姓名: LT
学号:20224126
实验教师:WZQ
实验日期:2023年5月26日
必修/选修: 专选课

一、实验内容
具体内容:Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
注意事项:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。20分。
(3)实验4的遇到的问题以及感想体会。5分。
(4)对全课进行总结,并写课程感想体会、意见和建议等。10分。

二、实验过程及结果
1.确定实验内容
在选题时,我将自己的喜好与实验要求相结合。由于我本人喜欢欧美音乐,平时需要经常追踪Billboard榜单数据,而在浏览器里登录Billboard官网等待时间过长给我带来了很多困扰,于是我最终确定尝试利用Python爬Billboard官网获取榜单信息。
2.编写代码:
(1)代码展示

import billboard

chart=billboard.ChartData(name='hot-100',date='2023-05-23',year=None) #默认爬取特定日期的周榜

while True:
 number = int(input("请输入要查询的排名-1,【例:冠军单曲为0,第二名为1】"))
 song = chart[number]  # ChartData返回对象长度根据榜单而变化,如周榜长度为100,索引从0开始

 title=song.title        #title属性,即歌名
 print(title)

 rank=song.rank          #rank属性,即歌曲当前排位
 print(rank)

 artist=song.artist      #artist属性,即歌手
 print(artist)

 peakPos=song.peakPos    #peakPos属性,即历史最高排位
 print(peakPos)

 lastPos=song.lastPos    #lastPos属性,即上周排位
 print(lastPos)

 weeks=song.weeks        #weeks属性,即在榜周数
 print(weeks)

 isNew=song.isNew        #isNew属性,即是否为新上榜歌曲,如果不是则返回False
 print(isNew)

 if 0 == int(input("是否继续查询?1继续,0结束")):
  break

chart = billboard.ChartData('hot-100-songs', year=2020)
print(chart)

chart = billboard.ChartData('hot-100-songs', year=2021)
print(chart)

chart = billboard.ChartData('hot-100-songs', year=2022)
print(chart)

(2)代码详解
①准备工作:我先提前从互联网上查询了billboard的爬虫代码并在本机上进行了敲写,随后在pycharm上导入了billboard模块。

img

②构造函数ChartData
由于我设计的查询系统包括本周周榜数据查询+2020、2021、2022三年年榜数据查询,所以除了要向函数传递date、year两个参数,还要传递name参数(确定要查询的是周榜还是年榜)。

img

③周榜部分:设计循环
周榜数据部分我设计了通过输入单曲对应数字查询单曲成绩的系统,能够查询到单曲的歌名、本周排位、歌手、最高排位、上周排位和在榜周数(若是本周新进榜的单曲还会显示“True”,非本周入榜的新单曲会显示“False”),如果还要继续查询的话输入数字1就可以查询其他单曲的数据,想要看年榜数据就直接输入0.

img

④年榜部分:
设计代码直接显示三年的年榜数据

img

(3)具体运行效果


三、实验中遇到的问题及解决过程
①问题1:一开始编写代码时发现周榜只能够查询一次,想要查询其他单曲还要再重新运行一次程序。
问题1解决方案:利用之前在实验二中学习过的while循环,使得周榜数据可以反复查询。

②问题2:代码编写过程中出现的各种报错
问题2解决方案:在互联网上查询了对应报错的原因以及解决方法。具体问题包括以下四个:
outside loop:if没有置于while循环中使用
expected an intended block:没有合适的空格,需要往后再空一格
Perhaps you forgot a comma?:忘记加逗号
missing 1 required positional argument: 在下一行前需要多空一格

四、感悟思考
课程总结与感悟:
①对Python的应用能力得到了明显提高。在选择本课前,本人从未接触过编程,而现在已经可以自己参考相关资料设计出能够解决自己实际问题的简单程序了,感触颇深。每次认认真真完成的实验都极大地加深了我对Python这个编程小宝藏的了解与应用程度,我也掌握了部分常用语句的编写。
②锻炼了自己的耐心。要认真完成Python作业,就需要自己一行代码一行代码的输入并检查,并不是简单复制粘贴就可以的。在实验过程中遇到了很多困难,比如反复出现的同一报错但自己又找不到问题在哪里,虽然有抱怨之情,但在认真查询了很多资料并自己反复修改后终于还是找到了自己错误的原因。我也意识到了挫折是难免的,要有耐心、有毅力,最后才能出色地完成任务。(在看到自己编写了很久的程序正常运行时,也有种看着孩子平安出生的老父亲的感觉)
③英语水平得到了提高。很多报错由于本人英语水平不够而看不太懂,在查询报错原因时也积累了不少单词;包括老师设置的单词打卡加分,也让我尽量坚持做到了每天背词,算是本课学习的意外之喜?
④认识了可爱的老师,很有耐心也很温柔,课堂氛围特别好,每次上Python课前都是充满期待、充满干劲的。
⑤意识到了合作的重要性。遇到很多问题都是周围同学帮我改正的,在互帮互助中双方都得到了成长。

建议:老师请务必延续自己的讲课风格,特别亲切,同学们也都特别喜欢~ 就是以后上课时可以讲的稍微慢点,有的地方我们还没听懂老师就过去啦。
很开心自己选修了王老师的Python,很感激与老师的相遇,也慢慢发现了Python的魅力所在!祝老师天天开心~

...全文
130 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

42

社区成员

发帖
与我相关
我的任务
社区描述
技术交流
教育电商 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧