20234229 2023-2024-2 《Python程序设计》实验4 Python综合实践

20234229牛玉立 2024-05-15 21:20:59

课程:《Python程序设计》
班级: 2342
姓名: 牛玉立
学号:20234229

实验教师:王志强
实验日期:2024年5月14日
必修/选修: 公选课

1.实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)

例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。

例如:利用公开数据集,开展图像分类、恶意软件检测等

例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。

例如:爬取天气数据,实现自动化微信提醒

例如:利用爬虫,实现自动化下载网站视频、文件等。

例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等

注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

我的内容类似于编写小游戏,主要分为两个程序,一是通过代码的编写构造出烟花绽放的动态,二是通过代码的编写构造一个闪动的爱心形状。

2. 实验过程及结果

一,绘制动态烟花绽放,以下为编写过程和思路。

首先,使用import语句导入模块,主要包括导入专门为编写电子游戏而设计的pygame模块,循环语句和time时间模块,方便后续程序的编写。其次设置窗口尺寸、定义颜色,并对游戏初始化,定义构造函数init,定义游戏的模式和说明文字(firework烟花)。

img

第二步:主要使用random.randint(),根据所定参数随机生成函数,包括对烟花宽度、高度、颜色、速度的设置数据限制。

其次,下列包含一个名为explode的函数,该函数接受一个名为sparks的参数。此函数通过使用for循环生成50个spark对象,并将其附加到传递的sparks列表中,这主要设置的是一个类似于火花的效果,而这个火花的属性有x、y、color。 

然后,再定义一个参数screen,下一步分别创建pygame屏幕的颜色和圆形图案的颜色。

img

接下来,我们使用初始化函数init分别定义火花的x、y位置和颜色,并且定义了初始速度、速度属性的取值范围,主要为了模拟烟花的整体效果。

然后,我们定义该物体的移动行为:物体在x和y方向上分别加上x和y方向上的速度,它还会在y方向上受到一定加速度的影响,年龄属性也会相对增加。 

img

接下来,设置clock函数,要定义烟花fireworks和sparks的时间。然后,获取程序开始的时间,设置程序总运行时间(为3分钟), 并且设置当前程序运行时间。最后,利用while循环判断当前运行时间是否小于总运行时间,若事件运行时间和总时间相等则停止,若继续运行则表示错误。

然后,利用if循环和for in range赋值,绘制新烟花并且更新和绘制烟花。

img

接下来,设置移动和绘制火花,更新程序运行时间,添加时间延迟,让程序暂停0.1秒。 

img

下面为烟花绽放的动态视频展示:

下面为烟花源代码:

img


img


img


img

gittee上的代码地址: https://gitee.com/niu-yuli/20234229-niu-yuli/blob/master/%E7%AC%AC%E5%9B%9B%E6%AC%A1%E5%AE%9E%E9%AA%8C%E7%A8%8B%E5%BA%8F2.py

二, 绘制爱心,并展示其形成过程,以下为具体编写过程和思路图片展示:

img


下面为爱心代码运行的视频:


下面为爱心源代码:

img


gittee上的爱心代码:https://gitee.com/niu-yuli/20234229-niu-yuli/blob/master/%E7%AC%AC%E5%9B%9B%E6%AC%A1%E5%AE%9E%E9%AA%8C%E4%B9%8B%E7%88%B1%E5%BF%83%E4%BB%A3%E7%A0%81.py

3. 实验过程中遇到的问题和解决过程

问题1:在两个实验中我均遇到了pygame不存在的问题,pygame的缺少导致python中许多代码的无法运行或显示错误,如下图所示:

img


解决过程:于是我上网查找如何下载pygame:首先打开我的终端或者命令提示符,其次,安装pygame在终端或命令提示符上,最后,可以在python中验证是否安装成功,下面是我的解决过程:

img


img


问题2:许多陌生的函数句法和较为负责的逻辑代码让我无法理解。
解决过程:查找相关的英语单词,联系python的上下语句进行理解,并在网上查找相关句法的用法,结合老师上课讲的基础最终得以理解。  

4.课程总结与感想

带我进入python天地的是python的第二节课内容:王老师讲授的是动态数据类型,其中包括整形、浮点型(表示代表有小数点的实数)、字符串型(表示文本或字符串序列,这些字符可以是字母、数字、符号、空格等,并且它们通常按照一定的顺序排列)、布尔型(用于表示逻辑值真或假,通常只有两种取值:true和false),这些数据类型就像是组成一栋大楼的砖瓦,python就是由这些种种的动态数据类型组成的运行程序。

第三节python课,我们了解到了许多python运行的内在法则,例如:python要遵循一定的代码缩进(一个tab或者四个空格)、在python给字符起名字叫做标识符,而且标识符不能与保留字相同、还有输入输出代码等等

第四节python课,我们认识了python中的序列——列表【】、元组():元素不能改变、集合{}、字典{K:V,K:V...},在介绍完这些之后,我们了解了一种高级的索引方式“切片”,使用这个可以从字符串、列表、元组等集合中取出自己想要的部分。

第二节实验课,我们在了解完序列之后,进一步在python中使用函数来编辑代码,这一过程自己命名函数,可以选择不同的数学算法对数据进行处理。

令我印象最深刻是第三节实验课,也就是socket网络编程技术:socket=IP+端口,在这一实验中,一方同学担任服务端、另一方同学担任客户端,选择相同的端口地址,并且两人处在同一WiFi环境下,开始监听链接,进入循环,不断接受客户端的连接请求,然后接收传来的数据,并发送给对方数据,即可完成对话。在这一实验中,我充分认识到了python强大的沟通连接功能,在与同学互动中体会到了python的魅力。

后面的课程中,我们学习了正则表达式:有普通字符和元字符组成,用处:本身是一个字符串,因为其包含元字符,故可以用于检索查找,比如在网站中查找关键词等;异常处理:对数码错误进行修改。

最后一节课:爬虫——爬取数据,爬虫的应用:网站更新和检测、网站的内容提取和处理、自动化操作,但是使用爬虫时需要遵守网站的robots协议和法律法规,以免对网站造成不必要的负担或违反法律。爬虫常用的三个库:urllib,urllib3、requests、bs4。以及如何反爬虫。

感想体会:当今世界是互联网世界,为了不被时代所抛弃,也为了我们以后的公务员的保密工作,我们掌握python是至关重要甚至是迫在眉睫的。很高兴在王老师的带领下走进了python的世界,python是由一连串一连串英文字母组成的,所以学习好英语的重要性再一次推到了我们面前;python并不是随意的,就像自然界或者人类社会,都是有其运行法则的,我们必须按照其运行法则进行程序的设计;python也并不是简单易懂的,有些代码的编写需要一定的数学基础,代码的运行是具有数学逻辑的。虽然python的课程到此结束,但是我会在课余时间继续探索python的其他功能,并且把这种探索精神拓展运用到其他学科。

最后,非常感谢王老师在这段时间的辛苦付出,无论是学习知识还是学习方法,老师都给予了我们宝贵的指导,感恩与老师共同度过的这段时间,愿老师越来越好!

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

93

社区成员

发帖
与我相关
我的任务
社区描述
Python程序设计作业
软件构建 高校 北京·丰台区
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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