查看全课大纲(第 13 / 51 节)
  1. 1.为什么人人都该学点编程?
  2. 2.计算机与程序设计:你的电脑到底在“想”什么?
  3. 3.Python 这门语言,到底有什么魔力?
  4. 4.Python 开发环境配置:如何拥有你的第一个“编程工具箱”?
  5. 5.如何安装一个更强大的代码编辑器?
  6. 6.汇率兑换1.0:你的第一个“钱生钱”小程序
  7. 7.你的第一行代码,藏着哪些秘密?
  8. 8.汇率兑换2.0(上):让程序看懂“CNY”和“USD”
  9. 9.汇率兑换程序,如何让它“聪明”地判断币种?
  10. 10.汇率兑换程序能一直运行,直到我喊停吗?
  11. 11.汇率兑换4.0:如何把“算钱”功能打包成积木?
  12. 12.汇率兑换5.0:给你的程序穿上“结构化”的西装
  13. 13.怎么用 Python 画一个会动的五角星?
  14. 14.如何让程序自动画出不同大小的五角星?
  15. 15.函数自己调用自己,会发生什么?
  16. 16.用递归画出神奇的分形树
  17. 17.Python 怎么计算你一天躺着不动能消耗多少热量?
  18. 18.如何让程序“活”起来,持续为你服务?
  19. 19.如何让 BMR 计算器更“聪明”?
  20. 20.当程序遇到“不按套路出牌”的用户怎么办?
  21. 21.怎么用 Python 模拟一个“滚雪球”式的存钱计划?
  22. 22.如何用列表记录每一周的存款?
  23. 23.如何让程序自己数数?—— 用 for 循环解放你的双手
  24. 24.52周存钱挑战4.0:你的存款计算器能有多灵活?
  25. 25.52周存钱挑战:怎么根据日期自动查存款?
  26. 26.Python 怎么判断一年中的第几天?
  27. 27.列表 vs 元组:哪个更适合存储月份天数?
  28. 28.用集合给月份分个队,换个思路算天数
  29. 29.把月份和天数“锁”在一起:用字典给数据配个对
  30. 30.Python 怎么判断密码强弱?
  31. 31.Python 怎么给密码设置“防沉迷”系统?
  32. 32.Python 怎么把密码保存到文件里?
  33. 33.Python 怎么读取文件里的密码?
  34. 34.Python 怎么把密码检查工具“打包”起来?
  35. 35.Python 怎么把文件操作也“打包”起来?
  36. 36.计算机怎么“扔骰子”?——用Python模拟随机事件
  37. 37.如何用 Python 模拟掷两个骰子?
  38. 38.怎么用 Python 把骰子轨迹画出来?
  39. 39.骰子点数分布长啥样?用直方图一眼看穿!
  40. 40.用科学计算库让骰子程序“起飞”
  41. 41.空气质量指数怎么算?手把手教你写一个AQI计算器
  42. 42.空气质量指数计算:从零开始,让程序看懂空气
  43. 43.如何读取空气质量数据文件并找出空气质量最好的五个监测点?
  44. 44.JSON 数据怎么变成 Excel 表格?—— 让数据换个“马甲”
  45. 45.Python 怎么让程序自己判断文件类型?
  46. 46.如何让程序自己上网查空气质量?
  47. 47.用美味的汤来解析网页:Beautiful Soup 入门
  48. 48.如何让爬虫自动抓取全国所有城市的空气质量?
  49. 49.爬到的数据怎么存下来?—— 把全国空气质量数据保存为CSV文件
  50. 50.用 pandas 玩转空气质量数据:找出全国空气最好和最差的城市
  51. 51.空气质量数据怎么“洗”干净,还能画成图?

怎么用 Python 画一个会动的五角星?

约 18 分钟

小象实战讲义 · Python 入门:8 个小项目边玩边学

欢迎回来!上一章我们学会了用 Python 做汇率换算,让数字自己动起来。这一章,我们要让 Python 拿起画笔,开始画画了!学完这一节,你将能亲手写几行代码,让电脑在屏幕上画出一个闪闪发光的五角星。这可不是静态的图片,而是一个由你的代码“指挥”画笔一步步绘制出来的动画过程,是不是很酷?

💡 核心导读

本节你将学到:

  • 召唤画笔:如何让 Python 调用一个叫 turtle(小乌龟)的绘图库。
  • 基本指令:学习指挥画笔“前进”、“转弯”的四个核心命令。
  • 循环画图:用我们上一章学过的 while 循环,让重复的画图动作变得极其简单。
  • 本节唯一新增:我们只做一件事——引入 turtle 绘图库并学会它的基本移动命令。循环是复习,画五角星是应用。

一、案例描述:我们的第一个图形作品

我们的目标非常明确:用 Python 画一个标准的五角星。

就像你小时候用尺子和笔连接五个点一样,这次我们指挥电脑里的“画笔”来完成。你不需要懂复杂的数学,只需要告诉画笔:“向前走一段,然后向右转一个特定的角度”,重复五次,一个五角星就诞生了!

为了实现这个目标,我们需要一位“绘图助手”。幸运的是,Python 自带了一位——它就是 turtle 库。

二、案例分析:认识我们的绘图助手——turtle

turtle(海龟绘图)是 Python 标准库里的一个模块,它模拟了一只带着画笔的海龟在屏幕上爬行,爬过的轨迹就构成了图形。这个概念源于古老的 Logo 编程语言,非常适合初学者理解绘图过程。

使用它非常简单,只需要一句话:

import turtle

这行代码的意思是“引入 turtle 库”。import 是 Python 的关键字,专门用来引入别人已经写好的、功能强大的代码库。我们直接“拿来就用”,这就是模块化编程的魅力——我们不需要知道海龟是怎么画出线的,只需要知道命令它做什么。

引入之后,我们就可以使用 turtle.函数名() 的方式来指挥画笔了。

三、上机实验:指挥画笔,从直线到五角星

1. 搭建程序框架与引入画笔

让我们先创建一个新的 Python 文件,并搭建一个清晰的结构。虽然我们现在代码不多,但养成好习惯很重要。

"""
    作者:[你的名字]
    功能:五角星的绘制
    版本:1.0
    日期:[当前日期]
"""
# 1. 引入绘图库
import turtle

# 2. 接下来,我们将在这里编写绘图指令

2. 学习画笔的四个基本动作

turtle 库提供了几个最基础的函数,就像给画笔的遥控器:

  • turtle.forward(distance): 命令画笔向前移动 distance 个像素的距离。
  • turtle.backward(distance): 命令画笔向后移动。
  • turtle.right(degree): 命令画笔向右旋转 degree 度(改变方向,不画线)。
  • turtle.left(degree): 命令画笔向左旋转。

这里的坐标系默认是:画笔初始位置在画布中心,头朝右(正东方向)。forward 就是向右画线。

我们来试试画一条线:

import turtle

turtle.forward(150)  # 向前画150个像素长的线
# turtle.exitonclick() # 先注释掉,我们稍后解释

运行一下,你会看到一个窗口一闪而过,画了一条线。为了能看清,我们需要让窗口保持住。通常我们在绘图结束后加上 turtle.exitonclick(),意思是“点击窗口后退出”。但为了课程代码能顺畅运行,我们先不把它写在可执行代码块里,你可以在自己练习时加上。

3. 画出第一条折线:前进 + 转弯

光是走直线可画不出五角星。我们结合“前进”和“转弯”来画一条折线试试:

import turtle

turtle.forward(100)  # 1. 向右画100长的边
turtle.right(90)     # 2. 向右转90度(现在头朝下)
turtle.forward(100)  # 3. 向下画100长的边

运行这段代码,你会看到画笔先向右画线,然后转弯向下画,形成了一个直角。

4. 攻克五角星:找到“前进”和“转弯”的节奏

五角星的每个角是 36 度,但画笔在画每条边时需要转动的外角是 144 度。我们不需要深究这个数学,记住这个“魔法数字”即可。

所以,画一条边的动作是:前进 → 右转144度。 画一个五角星,就是把这个动作重复 5 次。

最“笨”但直观的方法就是写5遍:

import turtle

# 把「前进 → 右转144度」这个动作重复写5遍,就拼出一颗五角星
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)

这样确实能画出来,但代码又长又重复。如果你想改变五角星的大小,要改5个数字,很容易出错。

5. 用循环施展魔法:一行命令,重复干活

还记得上一章的 while 循环吗?它是处理重复工作的神器!我们用一个计数器 count 来控制重复5次。

import turtle

# 初始化计数器
count = 1

# 当计数器小于等于5时,执行循环体内的绘图动作
while count <= 5:
    turtle.forward(100)  # 画一条边
    turtle.right(144)    # 右转144度
    count = count + 1    # 计数器加1,准备画下一条边

# 绘图完成后,窗口保持打开(自己练习时取消注释)
# turtle.exitonclick()

运行这段代码,一个完整的五角星就会一步步地被画出来!

循环的魅力:现在,如果你想改变五角星的大小,只需要修改 turtle.forward(100) 里的一个数字就行了。清晰、简单、不易错。


📝 动手练一练

  1. 改造星星:把上面循环画五角星的代码中,forward 的距离改为 50 和 200,分别运行一下,看看星星大小的变化。
  2. 画个正方形:利用 forward 和 right 命令,你能写出一个画正方形的程序吗?(提示:正方形需要转90度角)
  3. 挑战六芒星:六芒星是两个正三角形叠加而成。提示:先想清楚正三角形怎么画(每条边走完后向外转 120°、重复 3 次);画完第一个三角形后,让画笔移动(抬笔、前进一小段再落笔)或转到合适方向,再画第二个三角形。注意:光靠“一个循环里换个次数和角度”走一条闭合路径是画不出六芒星的(那样只会把三角形描两遍),关键是画两个三角形。
👉 点击查看第2题参考答案(画正方形)

思路:正方形有四条等长的边,每个内角是90度。所以动作是:前进 → 右转90度,重复4次。

import turtle

count = 0  # 计数器从0开始
while count < 4:  # 循环4次
    turtle.forward(100)
    turtle.right(90)
    count = count + 1

本章小结

恭喜你!你不仅学会了用 Python 画画,更重要的是掌握了“引入外部库 (import)”这个强大的技能,并复习了用循环 (while) 自动化重复任务。

📋 行动清单

  • 在电脑上成功运行了画五角星的代码,亲眼看到了动画过程。
  • 尝试修改代码中的数字(如 forward 的距离),观察图形如何变化。
  • 思考:如果我想画一堆大小不同的五角星,该怎么办?(这是我们下一节要解决的挑战!)

我们让画笔重复画了同一个大小的五角星。下一节,我们将学习如何控制画笔的颜色、抬笔落笔,并让五角星由小到大、一个嵌套着一个地生长出来,让画面更有层次感。敬请期待!

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第3章代码包:分形树的绘制(含全部版本 4 个 .py)
    ZIP · 2KB
    下载
看图文没弄懂?展开看本节视频讲解(约 18 分钟)
📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)