20254224 实验四《Python程序设计》实验报告
20254224 2025-2026-2 《Python程序设计》实验四报告
课程:《Python程序设计》
班级: 2542
姓名: 张子菡
学号:20254224
实验教师:王志强
实验日期:2026年5月26日
必修/选修: 专选课
一、实验内容
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
评分标准:
(1)程序能运行,功能丰富(至少5个功能)。(需求提交源代码,并建议录制程序运行的视频)
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。
二、实验概述
(一)实验名称
“推箱子”难度逐级递增小游戏的开发与实现。
(二)实验目的
1.掌握Python语言的运用,将课堂上的理论知识运用到实际。
2.完成“设计一款小游戏并实现游戏的成功运行”的期末作业。
3.设计并实现关卡难度递增功能,实现“通关按空格即解锁下一关、箱子数量与难度同步提升”的配合。
4.完成游戏核心的交互逻辑的开发,确保游戏流程流畅、规则清晰,不出现明显的运行逻辑问题。
5.分析游戏开发过程中的问题与解决方案,提升程序调试、逻辑优化的能力。
(三)实验环境
软件环境:编程工具PyCharm,Pygame库。
(四)实验运行视频
https://b23.tv/9MVH3jB
三、实验分析
(一) 游戏需求分析
实验主题是设计一款“推箱子”小游戏,具有丰富的可玩性、实操性、并且操作简单,新手容易上手。在确定了基础的设计思路后,逐步完善代码,最终实现游戏流程的完整性与稳定性。具体需求如下:
1.操作需求:支持上下左右箭头键控制主角的移动,新手可玩。R键重置当前关卡布局,空格键解锁下一关。
2.游戏规则:玩家控制主角,将所有棕色箱子推至粉色目标点,使得所有粉色标志点变成绿色。全部推完后站到紫色标志点完成通关。
3.关卡机制:通关后按空格键自动解锁下一关,每关箱子数量随关卡数递增,目标点数量与箱子数量同步,难度不断提升,挑战感拉满。按R键重开本关,解决卡关难题。
4.视觉需求:清晰区分主角、箱子、目标点、墙壁等元素,动画流畅。
(二)重难点分析
1.重点:角色与箱子的互动设计——箱子只能推不能拉、不能穿墙,怎么去判断是否通关——所有箱子到位+主角站在紫色标志点,关卡难度递增机制的设计很困难,需要不断调试。
2.难点:pygame库在python3.3上无法安装,没有适配的资源库,需要通过其他方式实现。
四、实验设计
(一)总体设计
“推箱子”小游戏是我在b站上刷到了一个真人版推箱子,扫清障碍物通关的视频后获得的灵感。我从网络上手机里一些类似小游戏的设计思路和重要指令,初步设计后,发现存在很多bug,在运用AI等方式下不断调试优化,最终成功运行。
本游戏设计考虑时,将游戏中的核心元素封装为独立类,通过类的方法实现各自的功能,整体分为4个核心模块,各模块协同工作,确保游戏流程顺畅。
总体架构分为:窗口与环境初始化模块、角色与物体类设计模块、游戏交互逻辑模块、关卡控制模块。
(二)详细设计
1.窗口与环境初始化模块
负责游戏窗口的创建、颜色定义、网格绘制、字体设置等基础环境搭建,确定窗口大小、网格尺寸、元素颜色等参数,为游戏运行提供基础环境:
(1)窗口设置:固定窗口大小为594×594,设置窗口标题。
(2)颜色定义:区分背景色、主角色、箱子色、目标点色、墙壁色等,确保视觉区分明显。我特意选择的是浅色系马卡龙配色,看起来治愈温馨。
(3)网格绘制:绘制背景网格,便于玩家观察角色与箱子的位置。
2.角色与物体类设计
(1)Player类(主角):封装主角的位置、移动、动画、状态等属性与方法,实现箭头键控制移动、场景缩放时的动画衔接、重置位置等功能。
(2)InnerPushableBrick类(内部箱子):封装箱子的位置、移动状态、绘制方法,实现箱子被推动的逻辑——不能穿墙、不能重叠。
(3)OverallPushableBrick类(整体砖块):封装外部大砖块的位置、内部元素(箱子、目标点)的初始化与绘制,实现内部场景的生成与更新。
3.游戏交互逻辑模块
负责处理键盘输入、角色与物体的交互、通关判定等核心逻辑,是游戏运行的核心。
(1)键盘交互:监听箭头键、R键、空格键的输入,触发对应操作——移动、重置关卡、解锁下一关。
(2)箱子推动逻辑:判断主角移动方向,若前方是箱子且箱子可移动,则推动箱子移动。
(3)通关判定逻辑:检测所有箱子是否都推至粉色目标点,且主角是否站在紫色标志点,两者均满足则判定通关。
4.关卡控制模块
负责关卡的初始化、递增、重置等功能,实现难度递增机制。
(1)关卡初始化:根据当前关卡数,确定箱子数量,随机生成箱子和目标点的位置。
(2)关卡递增:通关后,按空格键触发下一关,当前关卡数+1,箱子数量同步增加,重新初始化关卡元素。
(3)关卡重置:按R键,重新初始化当前关卡,生成新的箱子和目标点布局,保留当前关卡难度。
(三)游戏流程设计
1.初始化游戏环境:创建窗口、设置颜色、绘制网格、初始化主角、当前关卡、箱子和目标点。
2.游戏主循环:监听键盘输入,处理角色移动、箱子推动、场景动画等逻辑,实时更新游戏画面。
3.通关判定:实时检测箱子是否全部到位、主角是否站在紫色标志点,若满足则显示通关提示。
4.关卡切换:通关后按空格键,解锁下一关,重置游戏元素,增加箱子数量,提升难度;按R键重置当前关卡。
5.游戏结束:点击窗口关闭按钮,退出游戏。
(四)基础功能
1.支持上下左右箭头键控制主角移动。
2.按下R键可重置并随机生成当前关卡布局。
3.玩家可将棕色箱子推到粉色目标点。
4.全部箱子就位后,主角走到紫色眼睛标志即可通关。
5.通关后按空格键自动解锁下一关,箱子数量随关卡递增、难度逐级提升。
五、实现过程
(一)前期准备
1.安装Pycharm环境及Pygame库(因为Pycharm3.3不可以适配pygame,我在询问豆包之后,在终端安装了pygame—ce,实现后面程序的成功运行)。

2.导入四个模块并初始化(pygame、sys、math、random)

Pygame:负责游戏窗口的绘制、角色设计等与游戏运行相关的核心功能,游戏的正常运行主要就依靠这个。在我无法安装成功pygame的情况下,游戏整体平面、单一,可操作性差,体验感特别不好。
Sys:Python内置模块,主要作用于游戏退出操作,保证游戏关闭时能正常终止程序。
Math:Python内置数学模块,用于后续可能的动画缓动(如角色移动时的平滑过渡)、位置计算(如网格坐标与像素坐标的转换),但是在我的代码片段中未直接使用,后续如果有需要可以再次优化。
Random:Python内置随机模块,用于随机生成箱子和目标点的位置,确保每一关的布局不同,提升游戏的趣味性和挑战性,避免一直一样,枯燥乏味。
3.窗口设置

GRID_SIZE=11:定义游戏窗口的网格数量,为11×11的网格布局。
CELL_SIZE=54:定义每个网格的像素尺寸为54。
SCALE_FACTOR=1/9:缩小比例,用于在游戏还是初始状态时,保证主体核心关卡的正常设计,表现。实现“一个砖块内包含小型网格”的效果。

TARGET_SCALE_FACTOR=1.0:小方块进入内部后,放大内部网格,实现“进入砖块后,内部放大至全屏”的游戏效果。

4.颜色定义

5.窗口创建

pygame.display.set_caption(...):设置窗口的标题,明确游戏名称和难度,提升用户体验。

6.游戏状态枚举

GAME_STATE_NORMAL=0:正常状态,主角在主网格移动,整体砖块为缩小状态。
GAME_STATE_PLAYER_PRE_SCALING=4:主角进入整体砖块前的过渡状态,执行主角缩小、移动至整体砖块内部的动画。
GAME_STATE_SCALING=1:缩放状态,内部网格从缩小状态放大至全屏,实现场景切换动画。
GAME_STATE_SCALED=2:缩放后状态,内部网格全屏显示,主角在内部网格移动、推箱子。
GAME_STATE_UNSCALING=3:缩放还原状态,内部网格从全屏缩小至整体砖块内,准备切换回正常状态。
GAME_STATE_PLAYER_POST_SCALING=5:主角退出整体砖块后的过渡状态,执行主角放大、移动至主网格的动画。
(二)核心函数分析
- 函数1:is_wall_pos(判断是否是墙壁位置)

GRID_SIZE_INNER=11:内部网格尺寸,与主网格一致,确保缩放后场景布局规整。
Y1:该行除了中间位置(GRID_SIZE_INNER//2=5)外,左右两侧均为墙壁(1≤x<5 或 5<x<10),中间预留缺口(主角进入/退出的通道)。
YGRID_SIZE_INNER—2(内部网格第9行):该行从x=1到x=9均为墙壁,形成底部边界。
X1(内部网格第2列):该列从y=2到y=8均为墙壁,形成左侧边界(除底部)。
XGRID_SIZE_INNER—2(内部网格第9列):该列从y=2到y=8均为墙壁,形成右侧边界(除底部)。
未满足上述条件则返回False,即该位置为可移动区域(主角、箱子可通行)。
2.函数2:is_player_out_of_top_gap(判断主角是否到达放大后第一行中间位置)

Top_gap _x=5(内部网格中间x坐标)、top_gap_y=0(内部网格第1行,索引0),该位置是内部网格顶部的中间缺口,与is_wall_pos函数中y=1行的中间缺口对应,是主角退出内部网格的唯一通道。
当主角的x、y坐标与top_gap_x、top_gap_y完全一致时,返回True,触发后续缩放还原逻辑;否则返回False。
3.函数3:get_inner_pos(计算整体砖块内部元素的像素位置)


状态1:current_scale==SCALE_FACTOR(非缩放状态,整体砖块缩小,内部元素也缩小):先判断整体砖块是否在移动(overall_brick.is_moving),若在移动,则通过缓动公式(ease_progress)计算当前整体砖块的像素位置(避免移动生硬);若未移动,则直接使用整体砖块的网格坐标转换为像素坐标。Pixel x/pixel y计算:整体砖块的像素坐标+内部元素偏移量(INNER_OFFSET_X/Y)+元素自身网格坐标对应的像素偏移(x/y * cell_size),确保内部元素在整体砖块中居中且位置准确。
状态2:current_scale != SCALE_FACTOR(缩放过渡或缩放后状态,内部元素放大):计算两个中心点。整体砖块的原始中心点(未缩放时的中心点)、目标场景中心点(缩放后内部网格的中心点)。通过缓动公式(ease_progress)计算当前偏移量,实现缩放时内部元素从“整体砖块内”平滑移动到“全屏”的效果,避免缩放时元素位置突变。pixel_x/pixel _y计算:基于偏移量,减去内部网格半宽/半高的像素值,再加上元素自身的像素偏移,确保缩放后内部网格居中显示,元素位置与网格坐标对应。
4.函数4:get_original_pos(计算主角/背景网格的原始像素位置)

网格坐标单元格像素尺寸(CELL_SIZE),即得到对应像素坐标,例如x=5、y=5,对应像素坐标为(554=270,5*54=270)。
5.函数5:get_player_pre_scale_target_pos / get_player、post_scale _target_pos(主角过渡动画目标位置计算)

(1)get_player_pre_scale_target_pos:
①作用:计算主角进入整体砖块前(GAME_STATE_PLAYER_PRE_SCALING状态)的目标像素位置,即主角缩小后移动到整体砖块内部缺口的位置。
②核心逻辑:目标内部坐标为(5,1)(内部网格中间x坐标,y=1对应缺口位置),转换为缩小后的像素位置,再加上整体砖块的像素坐标和内部偏移量,得到最终目标位置。
(2)get_player_post_scale_target_pos:
①作用:计算主角退出整体砖块后(GAME_STATE_PLAYER_POST_SCALING状态)的目标像素位置,即主角放大后移动到整体砖块上方的位置。
②核心逻辑:目标主网格坐标为(overall_brick.x,overall_brick.y - 1)(整体砖块正上方一个单元格),通过get_origina_pos函数转换为像素坐标,作为主角退出后的目标位置。
(三)核心类封装(该模块封装了3个核心类,分别对应游戏中的3个核心元素:内部箱子(InnerPushableBrick)、整体砖块(OverallPushableBrick)、主角(Player),每个类封装了自身的属性和方法)
1.类1:InnerPushableBrick(可推动的内部箱子类)



(1)属性(init初始化):
封装箱子的基础状态:网格坐标(x,y)、移动状态(is_moving)、移动进度与缓动相关参数(move_progress、move_from/to),确保箱子移动平滑、状态可控。
(2)方法1:move(推动箱子的核心方法)
核心作用:判定箱子推动合法性并执行移动操作。先检测目标位置是否越界、是否为墙壁、是否与其他箱子重叠,合法则初始化移动状态(移动起始/目标坐标、进度),返回True;非法则返回False,确保箱子只能推不能拉、不能穿墙。
(3)方法2:update(更新箱子状态)
核心作用:每帧更新箱子移动状态。移动进度递减,进度为0时结束移动并更新坐标,通过缓动公式实现箱子移动的平滑过渡,避免动作生硬。
(4)方法3:draw(绘制箱子)
核心作用:将箱子绘制到屏幕,适配不同缩放状态。根据当前缩放比例计算像素位置和绘制尺寸,绘制箱子主体和高光效果,增强视觉立体感,确保不同场景下箱子显示正常。
2.类2:OverallPushableBrick(可推动的整体砖块类)

至

核心功能:封装整体砖块及其内部所有元素(箱子、目标点、墙壁),实现整体砖块的推动、内部元素初始化和绘制,是场景切换(缩放)的核心载体。
(1)属性(__init__初始化)
封装整体砖块的位置、移动状态,以及内部核心元素(inner_bricks内部箱子、inner_targets普通目标点、inner_eyes_target眼睛目标点),通过随机算法初始化元素位置,确保关卡布局多样。
(2)核心方法解析
①move方法
核心作用:判定整体砖块推动合法性并执行移动。检测目标位置是否越界、是否与其他整体砖块重叠,合法则初始化移动状态,同步更新内部所有元素的位置偏移,确保整体移动连贯。
②update方法
核心作用:每帧更新整体砖块及内部元素状态。先更新自身移动状态,再遍历所有内部箱子并调用其update方法,确保整体与内部元素状态同步。
③draw_inner_targets方法
核心作用:绘制内部所有目标点(普通目标点+眼睛目标点)。根据缩放状态计算像素位置,普通目标点绘制为粉色圆形(箱子到位后变绿色),眼睛目标点绘制为紫色圆形,清晰区分不同目标类型。
④draw_inner_wall方法
核心作用:绘制内部网格的墙壁。根据is_wall_pos函数判定的墙壁位置,适配当前缩放比例绘制墙壁矩形,形成内部场景边界,限制主角和箱子的移动范围。
⑤draw方法
核心作用:分状态绘制整体砖块及内部元素。非缩放状态显示整体砖块主体及内部元素;缩放状态不显示主体,仅绘制内部元素,实现场景切换的视觉连贯,让玩家清晰感知场景变化。
3. 类3:Player(主角方块状态类)

至

(1)属性(init初始化)
按功能分为三类:基础状态属性(坐标、朝向、眼睛偏移)、移动相关属性(移动状态、进度、冷却、排队指令)、缩放动画属性(过渡动画的起始/目标位置、进度),全面封装主角所有状态。
(2)核心方法解析
①can_move方法
核心作用:判定主角移动合法性。根据游戏状态(正常/缩放),分别检测边界、墙壁、砖块碰撞,正常状态下可推动整体砖块,缩放状态下可推动内部箱子,返回布尔值判断移动是否可行。
②move方法
核心作用:执行主角移动操作。先处理移动冲突(箱子移动、自身冷却/移动中),冲突则暂存指令;合法则更新朝向、移动状态和弹跳动画,触发移动效果,确保操作流畅。
③reset_to_top_gap / reset_to_original_pos方法
核心作用:重置主角位置。前者将主角重置到内部网格顶部缺口,适配进入内部场景;后者将主角重置到整体砖块正上方,适配退出内部场景,均同步重置移动相关状态。
④缩放动画相关方法
核心作用:实现主角进出内部网格的过渡动画。初始化动画参数(起始/目标位置),更新动画进度,通过缓动公式计算实时位置和缩放比例,确保动画平滑连贯。
⑤update方法
核心作用:每帧更新主角状态。处理移动进度、排队指令、弹跳动画和冷却时间,确保主角行为符合操作逻辑,状态同步更新。
⑥draw方法
核心作用:绘制主角,适配所有游戏状态。根据不同状态计算实时位置和尺寸,绘制主体、高光和眼睛,突出主角形象,确保不同场景下显示正常、视觉连贯。
(四)其他游戏功能概述
1.工具函数(5 个):
(1)draw_original_grid:绘制游戏主网格线,明确主场景单元格划分;
(2)check_inner_victory:通关判定核心,需满足 “所有普通目标点有箱子 + 主角站在眼睛目标点”;
(3)draw_level_text:在屏幕左上角显示当前关卡和箱子数量,提示游戏进度;
(4)draw_victory_message:通关后显示胜利提示及操作指引(空格下一关、R 重玩);
(5)init_game:初始化游戏核心元素(主角、整体砖块、游戏状态等),支持指定关卡启动,实现难度递增(关卡 + 2 = 箱子数)。
游戏初始化:调用init_game,创建主角、整体砖块,初始化游戏状态(正常状态)、缩放参数等,启动游戏。
2.主循环(核心运行逻辑):
(1)事件监听:响应退出、R 键重玩、空格下一关(通关后)操作;
(2)移动控制:监听方向键,根据游戏状态(正常 / 缩放后)触发主角移动,处理移动冷却和排队指令,避免操作冲突;
(3)状态过渡:处理场景缩放(进入 / 退出内部网格)的全流程,包括主角过渡动画和缩放进度控制;
(4)状态判定:检测主角是否退出内部网格、是否满足通关条件,更新对应状态;
(5)元素更新:每帧更新整体砖块和主角的状态,确保行为同步;
(6)画面绘制:按 “背景→网格→关卡信息→整体砖块→主角→胜利界面” 层级绘制,控制帧率(60 帧 / 秒),保证画面流畅。
(7)核心逻辑闭环:玩家控制主角在主网格 / 内部网格移动、推箱子,完成通关条件后触发胜利界面,支持重玩和关卡升级,实现完整的推箱子游戏玩法。
(五)调试与优化
实现各模块后,进行反复调试,解决开发过程中出现的问题,优化游戏体验:
1.问题一:箱子生成时与目标点、墙壁重叠,导致无法通关。
解决方案:优化箱子生成逻辑,增加循环检测,确保箱子生成位置不重叠、不穿墙。
2.问题2:主角移动时,箱子推动不流畅,存在卡顿。
解决方案:优化移动动画逻辑,增加缓动效果,调整移动进度值,使箱子推动更平滑。
3.问题3:关卡递增后,目标点数量与箱子数量不一致,导致无法通关。
解决方案:修改OverallPushableBrick类的初始化方法,确保目标点数量与箱子数量完全同步。
4.问题4:R键重置关卡后,主角位置异常。
解决方案:优化关卡重置逻辑,重置主角位置至初始状态,确保重置后可正常游戏。
六、实验结果与分析
(一)实验结果
经过开发与调试,本实验成功实现了推箱子小游戏的所有需求,游戏运行稳定,功能完整,具体结果如下:
1.操作功能:可通过上下左右箭头键控制主角移动,R键重置当前关卡布局,空格键解锁下一关,操作流畅,无卡顿。

2.核心玩法:成功实现“推箱子到粉色目标点、站在紫色标志点通关”的核心玩法,判定逻辑准确,无误判、漏判情况。

3.关卡机制:实现关卡递增功能,每通关一关,箱子数量+1,目标点数量同步增加,难度线性提升,第1关3个箱子,第2关4个箱子,依次类推,可无限解锁新关卡。

4.视觉效果:角色、箱子、目标点、墙壁等元素区分清晰,移动、缩放动画流畅,游戏画面简洁美观,符合休闲小游戏定位。
(二)结果分析
1.功能完整性分析
本游戏完全实现了实验要求的所有功能,从基础操作到关卡递增,从通关判定到场景动画,每一个环节都能正常运行,无功能缺失。其中,关卡递增机制与通关判定逻辑是核心亮点,确保了游戏的挑战性与趣味性,符合实验目的。
2.性能分析
游戏运行稳定,无明显卡顿、闪退现象;箱子生成、角色移动、关卡切换等操作响应迅速;即使关卡难度提升(箱子数量增加),游戏运行依然流畅,说明程序逻辑优化到位。
3.存在的不足
(1)关卡布局随机生成,部分关卡可能存在难度过高或过低的情况,缺乏统一的难度梯度设计。
(2)游戏视觉效果较为简单,缺乏音效、特效等,沉浸感不足。
(3)未实现关卡存档功能,退出游戏后需要重新开始,用户体验有待提升。
4.实验展望
针对本次实验存在的不足,未来可从以下几个方面进行改进与拓展:
(1)优化关卡设计:引入固定关卡布局,设计合理的难度梯度,避免随机生成导致的难度失衡,提升游戏的趣味性。
(2)丰富视觉与听觉效果:添加背景音效、操作音效(如箱子推动声、通关音效),增加特效,提升游戏沉浸感。
(3)增加额外功能:实现关卡存档、分数统计、难度选择等功能,优化用户体验,让游戏更具可玩性。
七、课程总结
(一)课程感悟
12周的python课程学习,对于python技术的认识从一开始只知道小海龟指令运用的局限上,发展到现在可以基础地编写并成功运行简单程序,我认为是这门课程带给我最大的收获。在课程的学习过程中,困难随处可见。第一节课要求我们安装Pycharm的任务,就让我措手不及,不论是网址的正确输入,还是大学生免费版本的申请,好像总是比别人要慢一拍,这让我对于python课程蒙上了一层“庙堂之高”的滤镜,也产生了畏难心理。这种消极心理,一直持续到第一次实验报告,当王老师询问哪一位同学愿意贡献自己的电脑,方便他进行展示时,我没有丝毫犹豫,生怕错过完美躺平的机会。
仔细想想,我并不确定是哪一节课使得这种心态开始发生转变,也许是我发现周围的同学都可以熟练敲出代码;也许是我发现跟上老师节奏;也可能是我第一次早早敲完了代码,提交了实验报告,大家来向我寻求帮助,我发现python其实也没有那么可怕。
如果一定要说这学期python的收获是什么。那些复杂难懂的代码函数我好像不能够完全辨认;好像也无法不依靠AI大模型实现代码的完全设计。但是我认为这都不算问题,转变在于,我想要主动去打开python软件,去探索、去设计、去操作。这是我认为这一学期下来我最大的收获。做好一件事情固然困难,但是想要去做好一件事情的决心和兴趣同样珍贵,一学期的接触下来,python已经成为我想要在课余时间进行学习操作的兴趣爱好了,就是不知道试用期过了怎么办!!!
还有王志强老师,是一个很好很幽默的老师。学期开始前,我设想过我的python课可能回想数学课那样枯燥乏味。但是不论是上课签到的复杂手势,还是实验项目的趣味生动,都让我的Python体验感直线上升。我很害怕被老师提问,感觉在课堂上出糗很尴尬,但是王老师从来不会为难我们,还会用一些搞怪的事情环节氛围,真的是一个很好的专选课老师(也可能是我不用系统学习,所以看起来和蔼可亲吧)!
(二)课程意见及建议
我在之前也没有接触过python课程,所以我的意见建议知识仅仅从我个人出发,可以有取舍地参考!
首先,作为文科生,对于理科地代码、运行逻辑的了解掌握会比较薄弱。在这种情况下,长篇大论式代码的输出,学生的接受度不高。不是不想去学习了解,更多的是过于复杂,在中断了一下之后就很难再接上继续听,导致一节课下来理论知识的收获不够。这个我其实没有什么好的方法,因为我不了解教学任务之类的硬性标准。可以试试找一些小视频,或者使用PPT展示的方式,可以调动同学们的积极性,课堂效果可能会好一点。
第二,可以加强上课纪律的监督。因为专选课的缘故,大家可能不是那么重视课堂纪律,这就导致部分同学在上课过程中,出现玩手机、听音乐等现象,可以在每节课保持轻松的学习氛围的基础上,协调各班的学习委员加强课堂纪律的监督与管理。
最后,我建议可以增添一些小组活动,比如小组讨论,小组展示之类的。一方面,可以调动大家学习的积极性;另一方面,可以更加深刻有效地了解大家感兴趣地课题,方便后续的课程设置。
这是我的几点意见和建议,希望python课程可以在四系发光发热!

浙公网安备 33010602011771号