当前位置: 首页 > news >正文

20254115实验四Python综合实践报告

课程:《Python程序设计》
班级: 2541
姓名:刘知儒
学号:20254115
实验教师:王志强
实验日期:2026年5月12日
必修/选修:专选课

一、实验内容
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。 要求:
(1)程序能运行,功能丰富(至少5个功能)。(需求提交源代码,并建议录制程序运行的视频)15分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。20分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。10分

二、实验分析
本次实验较为综合,是对这个学期python学习成果的一次总结和全面考察。为了用相对简单的方式给老师呈现出更加直观的实验效果,并结合我本人并不高的python编程水平(严肃致歉)以及对游戏的浓厚兴趣,我决定编写一款经典的小游戏————贪吃蛇。因为它需要综合运用Tkinter图形绘制、碰撞检测与事件驱动机制,将通过面向对象设计将小蛇、经验球、墙壁等实体封装为独立类,并且要设计支持单人和多人联机对战。为保证流畅对战,还需要调试了移动冲突与碰撞逻辑,所以这个实验可以加深对游戏循环、状态机及实时交互的理解。

三、实验设计
(一)功能
结合课程学习内容和贪吃蛇的玩法,我在理科同学和AI的指导和帮助下设计出具有七个核心功能的贪吃蛇小游戏,兼顾逻辑完整,运行流畅和界面美观与多样化:
(1)包含传统贪吃蛇玩法:鼠标点击控制方向,吃食物增长身体,撞墙或撞自己游戏结束
(2)支持两台电脑通过局域网TCP联机对战,互相干扰,提升游戏趣味性
(3)有三种游戏难度可自由调节:简单、普通、困难,对应不同的蛇移动速度,给予不同水平玩家多样化游戏体验
(4)用 SQLite3 记录单人模式的最高分和玩家姓名,给单机玩法带来竞争性
(5)可自定义蛇的颜色、食物颜色、背景颜色,满足玩家多样化需求
(6)游戏过程中可随时暂停和继续,结束后可快速重玩,使游玩变得更加方便
(7)包含吃食物、游戏结束等多种音效,为游戏带来多感官体验
(8)采用 Python 内置的 Tkinter 库实现可视化弹窗界面,操作直观易懂,且不需要单独安装pygame

(二)开发环境
编程语言:Python 3.13
开发工具:pycharm
依赖库:内置标准库即可,如Tkinter,random等

(三)实验设计模块
游戏核心逻辑模块:Snake类、Food类
图形界面交互模块:SnakeGameApp(主菜单)、SinglePlayerGame(单人游戏窗口)、MultiplayerGame(多人联机窗口)、SettingsWindow(设置窗口)、LeaderboardWindow(排行榜窗口)
网络通信模块:GameServer(服务器端)、GameClient(客户端)
数据持久化模块:init_db()、add_score()、get_top_scores()
配置管理模块:GameSettings类、COLORS颜色常量、游戏尺寸/网格常量

三、实验内容
1、导入所有标准依赖库,定义游戏全局常量,实现贪吃蛇与食物的核心业务逻辑,完成游戏规则的底层封装。该部分为纯逻辑代码,不依赖 GUI 界面,可单独验证游戏规则正确性

第一张

第二张

第三张
2、统一管理游戏所有可配置参数,实现难度、外观等参数的集中维护,支持全局调用与修改,避免硬编码

第四张
3、基于 Tkinter 搭建单人游戏窗口,将核心逻辑可视化,实现鼠标点击控制方向、游戏循环、暂停 / 继续、重玩、分数保存等完整单人玩法

第五张

第六张

第七张

第八张

第九张

第十张
4、接入 SQLite 轻量级数据库,实现玩家分数的本地持久化存储;开发设置界面与排行榜界面,完善游戏辅助功能

十一

十二

十三

十四
5、基于 TCP Socket 实现客户端 - 服务器架构,完成双人局域网联机对战功能,实现游戏状态的网络同步与双蛇碰撞判定

十五

十六

十七

十八

十九

二十

二十一

二十二
6、开发程序主菜单,整合所有功能模块,提供统一的程序入口,形成完整可运行的游戏系统

二十三

二十四

四、实验结果
运行视频链接如下,显示可正常运行(不过操作手感不太好就是了😶)
https://www.bilibili.com/video/BV176Jw6pEwn/?vd_source=d9af4ac1446c3044902a8d591c3686e2

五、实验过程中遇到的问题和解决过程
问题1:多人局域网联机连接超时
解决:在 Windows 防火墙中允许 Python 通过专用网络,临时关闭防火墙测试,然后修改代码中的端口号码(实验三中有提到过类似的问题)

问题2:Tkinter 界面卡顿、闪退
解决:问了豆包,它告诉我通过window.after(0, 渲染函数)将 UI 绘制操作调度到主线程执行,严格遵循 Tkinter 的单线程模型

问题3:鼠标控制逻辑异常,出现一百八十度航母掉头、误触死亡
解决:优先保留当前轴向的方向,减少斜向点击的误判

五、总结、感想与建议

(一)本次综合实践总结
依旧bug上面跑程序,依旧💩山代码,依旧拼尽全力无法绷住。。。跟前几次一样,本次的综合实践任务还是充满了波折。问理科班的同学,问豆包牢师,在哔站上查视频攻略,历经千辛万苦,付出一星期的努力,终于完成了这篇实验报告/(ㄒoㄒ)/~~这次实践也让我明白,编程考验的不只是智力和对程序的理解,更是百折不挠的坚韧和对严谨过程的追求

(二)课程总结
通过本学期对《Python程序设计》课程的系统性学习,我了解了Python基础语法和一些高级综合应用。以下是一些重点:
(1)初识Python
了解Python的发展背景、语言特点(简洁、易读、丰富的库)及应用场景,搭建开发环境
(2)Python语法
我学习了变量与数据类型(数字、字符串、布尔、空值)、运算符(算术、比较、逻辑、赋值)、基本输入输出 input() print() 及代码书写规范(缩进、注释)。
(3)流程控制语句
条件语句: if 、 elif 、 else 分支结构
循环语句: for 循环、 while 循环
控制关键字: break 、 continue 、 pass
理解程序的执行流程与逻辑判断
(4)序列
掌握Python核心数据结构:
列表(List):有序可变序列,支持增删改查
元组(Tuple):有序不可变序列
字典(Dict):键值对映射
集合(Set):无序不重复元素集
切片操作、列表推导式等高效用法
(5)字符串
字符串的创建、索引、切片、常用方法( split() 、 join() 、 replace() 、 strip() 等)、格式化输出( % 、 format() 、f-string)及正则表达式基础(如手机号匹配规则: 13[4-9]\d{8} 、 15[01289]\d{8} )。
(6)函数
定义与调用:使用 def 关键字
参数机制:形参 vs 实参、位置参数、关键字参数、默认参数、可变参数( *args 、 **kwargs )
返回值: return 语句,多返回值(元组解包)
(7)面向对象程序设计
类(Class)与对象(Object):类是抽象模板,对象是类的具体实例
类的实例化:通过类名加括号创建对象(如 obj = ClassName() )
构造方法: init() 用于初始化对象属性,在实例化时自动调用
类的方法 vs 普通函数:方法定义在类内部,第一个参数为 self (指向实例本身);函数独立存在
面向对象三要素:封装、继承、多态
包与模块:模块是单个 .py 文件;包是包含 init.py 的文件夹,用于组织和管理代码
(8)模块
导入机制: import 、 from...import 、 as 别名
常用标准库: os 、 sys 、 math 、 random 、 datetime 等
自定义模块:模块的创建、导入路径与使用
包的结构管理
(9)异常处理及程序调试
异常处理的意义:增强程序健壮性,避免崩溃,提供友好的错误提示
处理方式:
try...except...finally 结构
一些特定异常类型( ValueError 、 TypeError 、 FileNotFoundError 等)断点调试
(10)文件及目录操作
冯诺依曼体系架构:计算机由运算器、控制器、存储器、输入设备、输出设备组成
内存 vs 外存:内存(RAM)速度快、断电易失;外存(硬盘/U盘)速度慢、持久保存
数据分类:结构化数据(数据库表、Excel)vs 非结构化数据(文本、图片、音视频)
文件操作核心方法:
open() :打开文件
read() / readline() / readlines() :读取内容
write() :写入内容
seek() :移动文件指针
close() :关闭文件(或使用 with 语句自动管理)
目录操作: os 模块管理路径、创建/删除文件夹
(11)使用Python操作数据库
数据库基本操作:增查删改
(12)爬虫
概念:自动抓取网页信息的程序,用于数据采集、分析
法律边界:从入门到入狱
核心技术:爬取库、解析库
反反爬虫策略

(三)课程感悟
作为一个文科生,我本来实际上是对python这类编程项目缺乏兴趣的🥲。但王老师真的是一个很优秀的老师,讲课深入浅出,用幽默风趣的授课风格将繁复的编程知识一点一点掰碎塞进我的🐖脑(虽然还是有很多内容没有完全明白)。同时给我答疑和批改实验报告时也非常有耐心,课余时间也和我们很聊得来。也感谢王老师能让我在编程中找到一丝乐趣,让这门课程不那么枯燥且让人掉头发。在这学期的课程中有一个重要的收获,就是对AI工具的理解与运用。AI工具的确方便,比如我在本次综合实践中如果没有豆包的帮助,真的很难完成。但我们不能因此过度依靠它,更需要注重自己的思考与行动,有问题需要自己去探索、自己去学习、自己去实践,如此方能有所收获。

(四)课程建议
其实也没啥好说的了,这个课程各方面来说都可以给到夯。硬要说的话🤔🤔🤔或许可以把一些实验内容变为小组作业。?这样既可以减轻各个同学的负担,也可以培养小组之间的团队协作意识。最后,王老师辛苦了💐💐💐新的一年工作顺利平安喜乐

参考资料
学习通《零基础学Python》教材

http://www.jsqmd.com/news/1013216/

相关文章:

  • MPC8260 MCC内部状态寄存器RSTATE/TSTATE深度解析与实战配置
  • MPC8306 eLBC控制器GPCM与FCM模式配置详解及实战
  • 5分钟解锁游戏无限可能:BepInEx插件框架完全指南
  • 深度剖析:FontCenter技术架构解析与AutoCAD字体管理自动化实现
  • 杰理之触摸开机后PB5无法控制的问题【篇】
  • 如何用Path of Building PoE2打造完美流放之路2角色:终极构建指南
  • 如何彻底解决微信聊天记录丢失问题:WeChatMsg完全免费终极方案
  • SillyTavern性能飞跃指南:5个简单技巧让AI聊天如丝般顺滑
  • 2026年6月亨得利中国官方售后网点全覆盖实地考察与真实性核验报告 - 亨得利中国服务中心
  • 如何在Linux系统上安装Realtek 8192FU无线网卡驱动:完整指南
  • 如何快速上手Ghostwriter:专注写作的Markdown编辑器完整指南
  • VutronMusic:当音乐播放器开始思考你的聆听习惯
  • WSL2 + Ubuntu 22.04 保姆级教程:手把手教你用 Conda 搞定 LLaMA-Factory 微调环境
  • 2026最新!铁岭老书古籍回收怎么选?本地三大靠谱商家最新指南,怀念书店登顶! - 速递信息
  • 重塑老旧Mac:OpenCore Legacy Patcher的架构革命与实施指南
  • 免费开源相机匹配神器fSpy:从单张照片到3D场景的魔法转换
  • 3个技巧彻底解决Windows 11文件资源管理器窗口混乱问题
  • git回滚操作
  • 深度揭秘防火卷帘、防火门关键消防指标达标要求
  • 探险旅游翻译:跨越语言与自然的专业桥梁
  • 深入解析PowerPC MPC7450核心寄存器:从MSR到HID0的底层编程实战
  • 3分钟掌握B站视频解析:bilibili-parse让你的下载变得如此简单
  • ML307 4G模块解决方案:为xiaozhi-esp32项目提供可靠的移动网络接入
  • FanControl完全指南:Windows平台专业风扇控制软件高效使用教程
  • 杰理之双IO口推灯【篇】
  • Prompt Engineering Guide:从零开始的AI提示工程完整指南
  • 终极指南:如何免费为macOS打造个性化鼠标光标体验
  • 德邦快递怎么寄便宜?试试这个方法,省钱一半 - 快递物流资讯
  • Any Listen跨平台私有音乐播放服务实战指南:从源码构建到Docker部署全流程
  • 终极指南:2026年如何用ESP-IDF v6.0构建下一代物联网设备