实验四 Python综合实践
20254116 2025-2026-2 《Python程序设计》实验4
课程:《Python程序设计》
班级: 2541
姓名: 李枝荣
学号:20254116
实验教师:王志强
实验日期:2026年5月226日
必修/选修:专选课
1.实验内容
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
综合实践报告
一、实验分析
本次Python综合实践,我选择的是编写小游戏,小游戏是贪吃蛇小游戏,因为本人真的知识储备不够,所以借助了豆包的帮助,加上自己的制作。我贴合课程综合实践要求,融合图形界面开发、键盘交互、数据计算、本地文件存储、游戏状态控制等多项技术,实现了综合性的Python程序开发练习。应本次实验要求需要实现至少五项核心功能,我制做的贪吃蛇小游戏,有5项功能,分别为:游戏界面绘制、键盘按键交互、分数统计计算、游戏数据本地存储、游戏状态判断(结束与重启)。它结构简单清晰,运行稳定无报错,适配Windows系统,操作简单,便于录制运行视频、展示实验效果,完全满足本次综合实践作业的要求。
二、系统设计
本项目采用模块化设计思想,将整个游戏程序拆分为五大独立功能模块,结构清晰、逻辑分层明确,对应作业要求的五项核心功能。
- 整体设计思路
以图形窗口为基础载体,通过键盘监听实现人机交互,结合循环刷新实现游戏动态运行,实时统计游戏分数,游戏结束后自动保存数据,并支持重启和退出操作,完整实现小游戏的闭环运行逻辑。
- 五大核心功能模块设计
(1)游戏界面绘制模块:利用Python内置tkinter库创建游戏窗口、黑色游戏画布,绘制绿色贪吃蛇、红色食物以及实时分数文本,构建完整可视化游戏界面。
(2)键盘按键交互模块:设置键盘方向键监听,通过按键事件改变蛇的移动方向,同时做反向移动限制,避免游戏逻辑bug,实现流畅的人机操控。
(3)分数统计计算模块:设定吃到食物自动加分规则,每次成功进食固定增加分数,实时刷新界面分数文本,完成分数统计与动态展示。
(4)本地数据存储模块:游戏结束后自动将本次游戏得分写入本地txt文件,实现游戏数据持久化保存,可随时查看游戏成绩。
(5)游戏状态判断模块:实时判断撞墙、撞自身等游戏结束条件,游戏终止后展示结束提示,支持按R键重启游戏、Q键退出游戏,完善游戏状态切换逻辑。
三、实现过程
1.游戏界面绘制模块
首先使用 Tk() 创建顶层窗口,geometry() 固定窗口大小,保证游戏界面稳定不变形。再通过tk.Canvas() 创建画布,作为所有游戏元素的绘制载体,并设置黑色背景。分数文本使用 create_text()绘制固定文本组件,用于实时展示分数。蛇身通过坐标列表保存每一节身体的位置,利用循环遍历蛇身列表,调用 create_rectangle() 批量绘制绿色方块。食物使用 create_oval() 绘制圆形红点。游戏动态画面依靠 canvas.delete() 清除上一帧画面,再重新绘制当前帧蛇和食物,实现动画效果。。

2.键盘按键交互功能
使用root.bind("


3.分数统计计算功能
先程序初始化 score = 0作为分数存储变量。在每一帧游戏循环中,通过判断蛇头坐标与食物坐标是否完全重合,判定是否吃到食物。如果判定成功,执行三个核心操作:第一,分数变量自增 10 分;第二,调用 canvas.itemconfig() 刷新界面文本,更新最新分数显示;第三,随机生成新食物坐标并延长蛇身长度,使游戏难度逐步提升。

4.游戏数据本地存储功能
核心函数为自定义的 save_score()。游戏结束触发后自动调用该函数。代码使用 open("score.txt", "w", encoding="utf-8") 以写入模式打开本地文件,自动创建文本文件,利用 utf-8 编码保证中文内容不乱码。将最终分数格式化写入文档,实现游戏成绩持久化保存。采用写入模式会自动覆盖上一次游戏记录,始终保存最新成绩,同时加入异常捕获,防止文件读写报错导致程序崩溃,代码健壮性强,实现了自动化数据存储功能。

5.游戏状态判断
游戏状态控制依靠边界判断、列表判断、按键绑定共同实现。撞墙判断代码:通过判断蛇头 x、y 坐标是否超出画布 400×400 范围,超出即判定游戏结束。撞自身判断代码:利用 new_head in snake 判断蛇头新坐标是否存在于蛇身坐标列表中,若存在说明撞到自己,触发游戏结束。游戏结束后将全局变量 game_running 设置为 False,停止游戏主循环,并在画布中央绘制游戏结束提示文字。同时绑定双按键功能:按 R 键执行重启逻辑,销毁窗口并重新运行当前脚本;按 Q 键执行退出逻辑,关闭主窗口。完整实现了游戏结束判定、游戏重启、游戏退出三大状态控制功能。


四、结果
五、课程感想
本学期 Python 综合应用课程系统学习了 Python 基础语法、流程控制、函数、数据结构、文件操作等基础内容,同时涵盖爬虫、数据处理、可视化、小游戏开发、自动化、网络安全等综合应用知识。课程由浅入深、理论结合实战,让我熟练掌握了 PyCharm 开发工具,理解了模块化编程与程序调试思路,具备了基础的代码编写、项目设计与问题排查能力。
通过一学期的学习,我掌握了 Python 编程的核心逻辑,明白了编程重在动手实践与逻辑思考。不断敲代码、调试报错的过程,让我的实操能力和逻辑思维明显提升。同时我也认识到 Python 用途广泛、实用性强,能够应用在各类场景中,真正做到学以致用,收获很大。
我建议课堂增加更多随堂实操练习,做到学练结合;阶段性小作业,确实可以循序渐进提升项目开发能力,不过可以稍微少一点吗。整体课程还是内容实用、收获良多的,对我提升编程综合能力帮助很大。

浙公网安备 33010602011771号