简介:这份Python基础课程PPT以“小海龟画图基础”为主题,为编程零基础或入门阶段的学习者提供系统讲解。教程围绕Python内置turtle模块展开,从认识虚拟小海龟与图形界面编程出发,逐步演示直线绘制、通过循环实现等边三角形、color()颜色设置及常见颜色英文名等核心操作,并给出彩色三角形综合案例,直观展示颜色与循环的配合。资源整体仅1个pptx文件,压缩包约2.64MB,轻量精简,无需额外安装任何依赖,打开即可用于课堂演示或个人跟练。目前该资源已有369人浏览/学习,适合教师备课、学生自学或程序设计启蒙场景。除基础绘图外,还提炼了画笔粗细、隐藏海龟、清屏、提笔落笔等进阶技巧,并附实践建议引导读者从三角形逐步拓展到矩形、多边形等图形创作,帮助建立坐标移动与角度转向的空间感,为后续Python编程打下扎实基础。 开门见山说一件事:如果你正在学 Python,又觉得 print("Hello World") 太单调,那我强烈建议你把小海龟画图作为入门第一课。小海龟是 Python 内置的 turtle 模块,它不像爬虫、量化交易那么“高深”,但恰恰是它,能让零基础的人在半小时内画出东西、产生正反馈,顺手把变量、循环、函数、模块导入、坐标、角度这些基础概念全过一遍。这篇文章我会把这门课的设计思路、环境搭建、核心命令、典型案例和踩坑排查完整拆给你看,既适合自学的初学者,也适合要给学生讲第一堂 Python 课的老师。
1. 小海龟画图这门课,到底在解决什么问题
1.1 turtle 是什么,为什么会成为入门首选
很多刚接触编程的人会有一个疑问:我已经能 print 出一行字了,然后呢?print 的反馈是文字,是抽象的,你敲 20 行代码,屏幕上还是那一行行字符,很难有“我在创造东西”的感觉。turtle 不一样。它的设计思路非常简单:屏幕中间有一只小海龟,你指挥它往前走、往左转、往右转,它走过的路径就会留下一条线。你写代码,立刻就能看到图形反馈,像一个实时的“画笔机器人”。
这套思想其实来自上世纪 60 年代的 Logo 语言,专门为儿童编程教育设计。海龟绘图不是为了画出一张多复杂的图,而是让初学者通过“指挥一个角色动起来”,理解代码是逐行执行的、程序是可以被循环和函数控制的、变量是可以改变状态的。这些恰恰是编程里最核心的抽象概念。现在的 Python turtle 模块就是标准库里的一个实现,不需要安装任何第三方包,装了 Python 就能跑。
1.2 这门课覆盖了哪些核心知识点
别小看一个画图课,我在实际教学中数过,它几乎能把 Python 基础语法的半壁江山串起来。首先是模块导入,import turtle本身就是“装插件”这个概念的第一次落地;然后是顺序执行,你写forward(100)和right(90),它就会老老实实按顺序走;然后是循环,画正方形只需要for i in range(4)四行代码,这是“模式识别”和“重复抽象”的最好启蒙;再往后是函数,你可以把“画一个正方形”封装成def square(),下次调用一次就画一个,这是模块化思维的第一次建立。
还能延伸到变量和数据类型,比如t.pensize(3)里的 3 是个整数,t.pencolor("red")里的 "red" 是个字符串,角度是浮点数,颜色还可以用 RGB 元组表示。你在不知不觉中就把这些概念摸了一遍。更重要的是,turtle 有极强的“容错可视化”——代码错了,画面立刻给你颜色看,画歪了、画飞了,你会很直观地感觉到“哦,角度算错了”或者“循环次数多了一次”,而不是面对一堆报错发呆。
1.3 为什么不用“Hello World”直接开场
也不是说 Hello World 不好,而是它作为“第一课”的刺激感太弱了。print("Hello World")的成就感能维持 3 分钟,之后你再去讲变量、讲列表,很多初学者会问“学这个干嘛”。turtle 给了你一个持续的目标——我想画一个五角星、我想画一朵花、我想画出一朵螺旋。为了达到这个目标,你必须去学使用循环、控制角度、设置颜色,所有知识点都有了即时的应用场景。
所以这门课的本质不是“画画课”,而是“用创造力驱动的语法入门课”。我在课程里的定位很明确:第一节课结束,学生要能独立画出至少三个由循环控制的图形,并且理解每一行代码在“指挥海龟做什么”。这种“我能造东西了”的正反馈,才是让新手能坚持学下去的关键燃料。
2. 环境准备:先把“画板”搭起来
2.1 Python 安装的关键细节
要跑 turtle,得先有一个能用的 Python 环境。很多初学者卡在环境配置这一步,其实大部分问题都能避免。第一,去官网下载 Python 时,要求是 3.10 以上就行,太老的版本对初学者不友好。第二,也是最容易犯错的点:Windows 安装时那个Add Python to PATH勾选框一定一定要勾上。不勾的话,你在命令行里输入python会得到 “不是内部或外部命令”的提示,然后开始怀疑人生。
macOS 用户注意一点,系统自带的 Python 是 2.x 版本,而且通常不会直接提供python3命令的软链,建议直接从官网下载最新稳定版并按向导安装。Linux 用户则可以用包管理器,比如 Ubuntu 系的sudo apt install python3 python3-tk,注意这个python3-tk是必须的,turtle 依赖 Tk 图形库,只装 Python 不装 Tk,在后面导入 turtle 时会报No module named 'tkinter'的错误。
2.2 编辑器选哪个:IDLE、VSCode 还是 PyCharm
第一节课我不建议在编辑器上折腾太久。最稳的方案是直接用 Python 自带的 IDLE,它和 Python 一起安装,不需要任何配置,打开后新建文件、写代码、按 F5 就能运行,turtle 图形窗口会正常弹出来。对于 1~2 个小时的入门课,IDLE 完全够用,还省掉了“解释器路径选择”这种让新手崩溃的配置环节。
如果后续准备往数据分析、爬虫方向走,早一点接触 VSCode 也不错。安装 VSCode 后用扩展市场装 Python 扩展,然后在左下角选择一个解释器路径,指向你刚装的 Python 就行。PyCharm 也是很多课程推荐的,但对初学 turtle 来说启动慢、配置相对复杂,第一节课反而容易被环境问题带偏节奏。我的建议优先级:IDLE(最快上手)> VSCode(为后续铺路)> PyCharm(等你要做完整项目再切过去)。
2.3 验证环境:运行第一段绘制代码
环境配好后,不要急着看教程,先跑一段最小代码确认绘图功能正常。新建一个文件,输入:
import turtle t = turtle.Turtle() t.forward(100) turtle.done()运行后,你应该能看到一个窗口,里面有只小海龟向右移动 100 像素并留下一条黑线。这里有两个小细节:第一,窗口能正常弹出,说明 Tk 图形库没问题;第二,代码最后一行写了turtle.done(),作用是让窗口保持打开,否则有些环境下窗口会一闪而过,看起来像“什么都没发生”。确认这一步没问题,整个环境就打通了。
提示:在 IDLE 中运行 turtle 程序时,如果窗口没有正常弹出,可以试试在文件最后加上
turtle.exitonclick(),这样点击窗口任意位置才关闭,给足了观察时间。
3. turtle 核心命令与坐标体系,一次讲透
3.1 海龟坐标系:方向、角度和屏幕边界
turtle 使用了我们熟悉的平面直角坐标系,屏幕中心是原点(0, 0),x 轴向右为正,y 轴向上为正。海龟默认面向右方,也就是 0 度方向;向上是 90 度,向左是 180 度,向下是 270 度。理解这个角度模型非常关键,因为画任何图形的本质都是“控制方向 + 控制距离”。
很多初学者画五角星失败,就是因为角度的计算没搞对。我的一个经验是:永远先画一个“方向坐标图”贴在手边——脑海中有这个坐标,再用setheading(angle)直接指定朝向,比反复left/right累加更不容易出错。setheading(0)朝东,setheading(90)朝北,这样调试起来非常直观。屏幕默认大小是 800x600 像素,超过边界海龟不会报错,但会跑到画面外面去,注意距离别给太大。
3.2 最常用的十个命令速查
我把第一节课最常用的命令整理成了一张表,配合实际图形去记,会比背文档快得多:
| 命令 | 作用 | 示例 |
|---|---|---|
turtle.Turtle() | 创建一只海龟对象 | t = turtle.Turtle() |
t.forward(d) | 向当前方向前进 d 像素 | t.forward(100) |
t.backward(d) | 后退 d 像素 | t.backward(50) |
t.right(angle) | 右转 angle 度 | t.right(90) |
t.left(angle) | 左转 angle 度 | t.left(45) |
t.penup() | 抬笔,移动时不画线 | t.penup() |
t.pendown() | 落笔,恢复画线 | t.pendown() |
t.pensize(w) | 设置线条宽度 | t.pensize(3) |
t.pencolor(color) | 设置画笔颜色 | t.pencolor("red") |
t.speed(s) | 设置速度,0 最快,1~10 递增 | t.speed(5) |
这些命令按功能可以分成三组:移动类、旋转类、属性类。移动和旋转是绘图的核心,属性是用来“修边幅”的。开课时我会让学生先玩 10 分钟自由命令,随便 forward、left、right,把海龟“遛”熟,再开始画正规图形。
3.3 颜色、填充与画笔属性
turtle 里颜色可以用三种方式指定:颜色名字符串、十六进制字符串、RGB 元组。最简单的就是直接写"red"、"blue"、"green"、"gold"这种常用英文名。想要更精确的颜色,可以用"#FF6600"这种十六进制形式。RGB 元组方式需要事先执行turtle.colormode(255),然后才能写t.pencolor((200, 100, 50))这种 0~255 的量。
填充是让画面好看的一个重要技术。基本套路:先用t.fillcolor("yellow")设填充色,再用t.begin_fill()表示“从这里开始记路径”,画完闭合图形后调用t.end_fill(),颜色就会自动填充进去。注意begin_fill()和end_fill()之间的图形必须是闭合的,否则填充效果会很奇怪。这些属性参数本身也是教学素材——整数、字符串、元组,就在这里有了真实使用场景。
4. 三个经典案例拆解:从正方形到彩色螺旋
4.1 案例一:用循环画一个正方形,理解重复代码的抽象
很多教材第一次画正方形会写 8 行代码:前进、转弯重复四次。但我更建议第一次就用循环:
import turtle t = turtle.Turtle() t.speed(3) for i in range(4): t.forward(100) t.right(90) turtle.done()为什么直接上循环?因为两次重复还可以硬写,四次重复就已经开始手酸了。range(4)里的 4 对应正方形的四条边,循环体里的两行代码就是“画一条边、转一个角”。关键是让学生理解:正方形之所以是正方形,不是因为出现了四次 forward,而是因为“重复四次相同动作”这个结构。理解了这个,改成三角形只需要range(3)和right(120),改成五边形是range(5)和right(72)——你会发现所有正多边形的代码结构长一模一样。
这里还可以顺带提一个经典公式:正 n 边形每次转弯的角度是360 / n。画正六边形就是range(6)+right(60)。学生在几分钟内就画出了好几种正多边形,那种凭规律“控制机器人”的快感,是自己敲 print 体会不到的。我强烈建议这个环节不要跳过,它是循环思想落地的最佳时刻。
4.2 案例二:画彩色螺旋线,体验变量和状态的变化
正方形画熟之后,下一个经典练习是螺旋线。螺旋线的核心规律是:步长不断增加,转弯角度固定。这就用上了变量:
import turtle t = turtle.Turtle() t.speed(0) colors = ["red", "orange", "gold", "green", "blue", "purple"] for i in range(36): t.pencolor(colors[i % 6]) t.forward(i * 5) t.right(60) turtle.done()这段代码里有两个特别好的知识点。第一,i * 5让步长随循环次数增长,海龟画出去的线越拉越长,自然形成螺旋;第二,i % 6是对 6 取余,让颜色从列表里循环取用,这个取模技巧在后续很多编程场景里都会反复出现。speed(0)是最快速度,免得等得太久。
跑完这个程序,学生会看到一条漂亮的彩色螺旋线。这时候我会追问一句:如果你把right(60)改成right(61)会发生什么?答案是一条几乎重合但更“膨胀”的螺旋,这种细微参数引起的视觉变化,会让学生真切感受到“程序里每个数字都有意义”。这种“改参数看效果”的探索过程,比单纯背语法要深刻得多。
4.3 案例三:画一朵简化的花,把圆弧和重复结合起来
最后一个案例把圆和循环结合在一起,画一朵有花瓣的花。单个花瓣其实是由两段圆弧拼成的:海龟先画一个半圆的凸起,转向后再画另一个半圆的凸起。代码如下:
import turtle t = turtle.Turtle() t.speed(8) t.pensize(2) t.pencolor("hotpink") for petal in range(8): for arc in range(2): t.circle(60, 90) t.right(90) t.right(45) turtle.done()这个案例有两个难点。难点一是t.circle(radius, extent)这个命令:60 是圆弧半径,90 是画多长角度的弧,换句话说“海龟沿着半径为 60 的圆走了 90 度”。难点二是嵌套循环:外层循环控制画 8 片花瓣,内层循环控制每片花瓣由两个弧组成。如果学生的逻辑还没跟上,可以先画单片花瓣,确认没问题了再加外层循环。运行结果是一朵粉色的花绕中心旋转排列,效果非常出片,完全能当朋友圈素材。
画完这朵花,第一节课的核心目标已经全部达成:模块导入、顺序执行、变量、for 循环、range、颜色、列表取值、注释和观察参数变化,全都走过一遍。学生带走的不只是几张图片,而是一套“读代码—改参数—看结果—猜规律”的探索方法。
5. 常见问题与排查技巧实录
5.1 turtle 窗口一闪而过,怎么办
最常见的问题就是运行后窗口闪一下就没影了,学生跑来问“我的代码是不是写错了”。其实代码大概率没问题,是程序执行完,窗口被立刻关闭了。解决办法是在代码末尾加一行turtle.done()或者turtle.exitonclick()。前者让窗口保持打开直到手动关闭,后者则是“点击窗口才关闭”,对新手更友好。IDLE 环境下,turtle.done()偶尔会有窗口无响应的问题,直接关掉重开就行。
5.2 报错 No module named 'turtle'
这个报错分两种情况。一种是你给文件起名的时候一不小心叫了turtle.py,然后程序运行时会先找到你自己这个文件,把自己当成 turtle 模块导入,结果里面没有画图方法,就报错了。改个名字就行,比如draw_star.py。另一种是系统缺少 Tk 图形库,这个最常见于 Linux 环境,解决方式是用包管理器安装python3-tk。Windows 和 macOS 用户很少遇到第二个原因。
5.3 海龟画图没反应,或者线条太慢
如果窗口正常弹出,但海龟画得跟树懒一样,检查两件事。第一,是不是忘记写t.speed(),默认速度其实还行,但当你画螺旋线、嵌套循环时会明显慢,设成speed(0)会快很多。第二,是不是用了t.tracer(0)忘了刷新,这个函数是用来关闭自动刷新画面的,用它之前要先t.update()才会显示最新图形,初学者容易在这里卡壳。我的建议是第一节课暂时别用 tracer,等掌握了基础刷新机制再优化。
5.4 画出的图形不对称,或颜色显示不对
图形不对称,九成是角度算错。常见错误是把right(90)写成left(90),或把360 / n的商当整数用了。画正多边形前,先在纸上画个草图,标出转向角,再写代码,能省一半调试时间。颜色显示不对,大部分情况是颜色名拼写错误或用了中文引号,pencolor("red")必须是英文双引号包裹的合法色名;想用更丰富的颜色,建议用 RGB 元组配合colormode(255),比如t.pencolor((255, 128, 0)),报错时注意看提示具体写在哪个字符上,通常一眼就能定位。
5.5 想保存画好的图,怎么做
turtle 窗口本身没有“另存为图片”按钮,但你有两个办法。最简单的就是直接截图,适合快速分享。如果想把画好的图保存成矢量格式,可以在绘图结束时加两行代码:
import turtle # 这里放你的绘图代码 t = turtle.Turtle() t.forward(100) canvas = t.getscreen().getcanvas() canvas.postscript(file="output.eps")这样会生成一个.eps矢量文件,可以用支持该格式的软件打开,或者用在线工具转成 PNG。需要注意 postscript 的保存语句必须放在绘图完成后、窗口关闭前,并且对复杂彩色填充图形的兼容性一般,如果遇到导出异常,截图仍然是保底方案。
6. 课后的延伸方向与我的教学体会
第一节课上完,学生通常还意犹未尽,这时候你可以引导一些有趣的扩展。比如画五角星时,可以考虑用两次循环加一次抬笔落笔,实现“虚线五角星”;也可以把案例二里的固定角度改为90 - i这种动态角度,生成更复杂的螺旋;还可以把多个图形封装成函数,做一个“图形生成器菜单”,用 input 接收用户选择。每多一个扩展,基础语法的熟练度就高一分。
我个人带过很多轮 Python 入门课,最大的体会是:用 turtle 教基础语法,学生忘词率明显比干讲语法低。因为画面给了大脑一个“记忆锚点”,比如一想到right(120)就想到那个尖尖的三角形角,一想到circle(60, 90)就想到花瓣的弧线。所以如果你正打算自学 Python,或者准备给别人讲第一课,与其从枯燥的概念开始,不如直接打开编辑器,让海龟先跑起来。画歪了、飞出去了都没关系,改参数、看现象、琢磨规律,这个过程本身就是编程入门最该有的样子。
本文还有配套的精品资源,点击获取