北京冬奥会开幕式上除了“中国结”雪花外,还有一个浪漫元素就是蒲公英

受此启发,我在网上搜索到蒲公英的简笔画,选了几个python绘图容易实现的简笔画作为参考,绘制出了以下三种蒲公英。

图1的蒲公英绒毛顶端是圆点,图2绒毛顶端是圆形光束,图3绒毛顶端是扇形光束。从左到右,蒲公英的绘制难度逐级增大。

案例1:蒲公英(顶端是圆点)

难度:★★☆☆☆☆

 【效果预览】 

蒲公英的绒毛顶端是圆点[简单]

 【重难点突破】 

1. 蒲公英绘制思路:先绘制出三束长短不一的绒毛,然后再进入循环让海龟重复绘制其他的绒毛。

2. 画蒲公英的歪茎:用超大半径,较小角度画圆弧,来实现歪茎效果。

如 turtle.circle(-600,40)

circle(半径,角度)  半径为负时,画在海龟头部方向的右边。即向下绘制,向左弯曲。

 【代码参考】 

我分享的代码虽然不是最简化的代码,但一定是最方便初学者理解的代码。


# 案例1:蒲公英(绒毛顶端是圆点)【简单】
import turtle              # 导入turtle库(模块)
turtle.speed(0)            # 设置海龟的绘图速度,参数为0时最快
turtle.delay(0)            # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
turtle.bgcolor("#1e67c5")  # 设置背景颜色为#1e67c5,一种蓝色
turtle.pencolor("#e0f4f5") # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。# 变量初始化设置
a=100                      # 定义变量a,表示长绒毛的长度
b=80                       # 定义变量b,表示中绒毛的长度
c=60                       # 定义变量c,表示短绒毛的长度
a1=8                       # 定义变量a1,表示长绒毛顶端圆点的直径
b1=7                       # 定义变量b1,表示中绒毛顶端圆点的直径
c1=6                       # 定义变量c1,表示短绒毛顶端圆点的直径# 画球状绒毛
for i in range(15):        # 循环15次。因为(8+8+8)*15=360# 画长绒毛turtle.forward(a)      # 海龟前进a像素turtle.dot(a1)         # 画直径为a1的圆点turtle.backward(a)     # 海龟再后退a像素,回到起点位置turtle.left(8)         # 海龟向左旋转8度,准备画中绒毛# 画中绒毛turtle.forward(b)turtle.dot(b1)         # 画直径为b1的圆点turtle.backward(b)turtle.left(8)         # 海龟再向左旋转8度,准备画短绒毛# 画短绒毛turtle.forward(c)turtle.dot(c1)         # 画直径为c1的圆点turtle.backward(c)turtle.left(8)         # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛# 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
turtle.pensize(3)          # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
turtle.right(80)           # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
turtle.circle(-600,40)     # 半径为负,画在海龟头部方向的右边# 海龟绘图结束,隐藏海龟
turtle.hideturtle()

下面的代码将各个变量进行了关联,只要改动一个变量a,就会影响其他变量的值,即可以实现蒲公英的等比例缩放。

为了方便初学者理解,在后面的两个案例中,变量不再做关联,只用固定的数值。

# 案例1:蒲公英(绒毛顶端是圆点)【简单】 变量有关联
import turtle              # 导入turtle库(模块)
turtle.speed(0)            # 设置海龟的绘图速度,参数为0时最快
turtle.delay(0)            # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
turtle.bgcolor("#1e67c5")  # 设置背景颜色为#1e67c5,一种蓝色
turtle.pencolor("#e0f4f5") # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。# 变量初始化设置(只要改动变量a的值,其他变量都会跟着变化)
# 变量之间的关系表达式,没有简化,是为了更方便理解
a=100                      # 定义变量a,表示长绒毛的长度
b=80/100*a                 # 定义变量b,表示中绒毛的长度
c=60/100*a                 # 定义变量c,表示短绒毛的长度
a1=8/100*a                 # 定义变量a1,表示长绒毛顶端圆点的直径
b1=7/100*a                 # 定义变量b1,表示中绒毛顶端圆点的直径
c1=6/100*a                 # 定义变量c1,表示短绒毛顶端圆点的直径# 画球状绒毛
for i in range(15):        # 循环15次。因为(8+8+8)*15=360# 画长绒毛turtle.forward(a)      # 海龟前进a像素turtle.dot(a1)         # 画直径为a1的圆点turtle.backward(a)     # 海龟再后退a像素,回到起点位置turtle.left(8)         # 海龟向左旋转8度,准备画中绒毛# 画中绒毛turtle.forward(b)turtle.dot(b1)         # 画直径为b1的圆点turtle.backward(b)turtle.left(8)         # 海龟再向左旋转8度,准备画短绒毛# 画短绒毛turtle.forward(c)turtle.dot(c1)         # 画直径为c1的圆点turtle.backward(c)turtle.left(8)         # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛# 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
turtle.pensize(3)          # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
turtle.right(80)           # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
turtle.circle(-600,40)     # 半径为负,画在海龟头部方向的右边# 海龟绘图结束,隐藏海龟
turtle.hideturtle()

案例2:蒲公英(顶端是圆形光束)

难度:★★☆☆☆☆

 【效果预览】 

蒲公英的绒毛顶端是圆形光束[较难]

【重难点突破】 

案例2使用了for循环嵌套。右图中框内的for循环代码块代替了左图中的一行代码turtle.dot(a1),因此可以将绒毛顶端的圆点变换为圆形光束。

 【代码参考】 

# 案例2:蒲公英(绒毛顶端是圆形光束)【较难】
import turtle                # 导入turtle库(模块)
turtle.speed(0)              # 设置海龟的绘图速度,参数为0时最快
turtle.delay(0)              # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
turtle.bgcolor("#1e67c5")    # 设置背景颜色为#1e67c5,一种蓝色
turtle.pencolor("#e0f4f5")   # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。# 变量初始化设置
a=100                        # 定义变量a,表示长绒毛的长度
b=80                         # 定义变量b,表示中绒毛的长度
c=60                         # 定义变量c,表示短绒毛的长度
a1=8                         # 定义变量a1,表示长绒毛顶端圆形光束的长度
b1=5                         # 定义变量b1,表示中绒毛顶端圆形光束的长度
c1=3                         # 定义变量c1,表示短绒毛顶端圆形光束的长度# 画球状绒毛
for i in range(15):          # 循环15次。因为(8+8+8)*15=360# 画长绒毛turtle.forward(a)        # 海龟前进a像素for i in range(12):            # 海龟循环12次,画绒毛顶端的圆形光束turtle.forward(a1)         # 海龟前进a1像素turtle.backward(a1)        # 海龟再后退a1像素,回到起点位置turtle.left(30)            # 海龟向左旋转30度,准备画下一条光束turtle.backward(a)       # 海龟再后退a像素,回到起点位置turtle.left(8)           # 海龟向左旋转8度,准备画中绒毛# 画中绒毛turtle.forward(b)        # 海龟前进b像素for i in range(12):turtle.forward(b1)turtle.backward(b1)turtle.left(30)turtle.backward(b)       # 海龟再后退b像素,回到起点位置turtle.left(8)           # 海龟再向左旋转8度,准备画短绒毛# 画短绒毛turtle.forward(c)        # 海龟前进c像素for i in range(12):turtle.forward(c1)turtle.backward(c1)turtle.left(30)turtle.backward(c)       # 海龟再后退c像素,回到起点位置 turtle.left(8)           # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛# 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
turtle.pensize(3)            # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
turtle.right(80)             # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
turtle.circle(-600,40)       # 半径为负,画在海龟头部方向的右边# 海龟绘图结束,隐藏海龟
turtle.hideturtle()

案例3:蒲公英(顶端是扇形光束)

难度:★★☆☆☆☆

 【效果预览】 

蒲公英的绒毛顶端是扇形光束[最难]

 【重难点突破】 

案例3也使用了for循环嵌套。图3框内的for循环代码块代替了图1中的一行代码turtle.dot(a1),因此可以将绒毛顶端的圆点变换为扇形光束。

敲重点:画扇形光束比圆形光束要复杂一点,一定要注意左右旋转的角度。不管是圆形还是扇形都要确保海龟最终刚好旋转360度,刚好能够回到起始位置。

如案例3中,因为6个30度和260度都是向左旋转left,80度是向右旋转right,所以海龟绘制完扇形光束后一定要再旋转260度,使得海龟刚好旋转了360度回到起始位置。

30度*6-80度+260度=360度

【代码参考】

# 案例3:蒲公英(绒毛顶端是扇形光束)【最难】
import turtle              # 导入turtle库(模块)
turtle.speed(0)              # 设置海龟的绘图速度,参数为0时最快
turtle.delay(0)              # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
turtle.bgcolor("#1e67c5")    # 设置背景颜色为#1e67c5,一种蓝色
turtle.pencolor("#e0f4f5")   # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。# 变量初始化设置
a=100                        # 定义变量a,表示长绒毛的长度
b=80                         # 定义变量b,表示中绒毛的长度
c=60                         # 定义变量c,表示短绒毛的长度
a1=8                         # 定义变量a1,表示长绒毛顶端扇形光束的长度
b1=5                         # 定义变量b1,表示中绒毛顶端扇形光束的长度
c1=3                         # 定义变量c1,表示短绒毛顶端扇形光束的长度# 画球状绒毛
for i in range(15):          # 循环15次。因为(8+8+8)*15=360# 画长绒毛turtle.forward(a)        # 海龟前进a像素turtle.right(80)         # 海龟向右旋转80度。(准备开始向左边光束)for i in range(6):            # 循环6次,即画6条光束turtle.forward(a1)turtle.backward(a1)turtle.left(30)           # 每条光束画完后,旋转30度。30*6-80=100turtle.left(260)         # 画完扇形光束后,海龟并未回到初始方向。需要再继续向左旋转360-100度  turtle.backward(a)       # 海龟后退a像素turtle.left(8)           # 海龟向左旋转8度,准备画中绒毛# 画中绒毛turtle.forward(b)        # 海龟前进b像素turtle.right(80)for i in range(6):turtle.forward(a1)turtle.backward(a1)turtle.left(30)turtle.left(260)    turtle.backward(b)       # 海龟再后退b像素,回到起点位置turtle.left(8)           # 海龟再向左旋转8度,准备画短绒毛# 画短绒毛turtle.forward(c)        # 海龟前进c像素turtle.right(80)        for i in range(6):turtle.forward(a1)turtle.backward(a1)turtle.left(30)turtle.left(260)          turtle.backward(c)       # 海龟再后退c像素,回到起点位置     turtle.left(8)           # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛# 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
turtle.pensize(3)            # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
turtle.right(80)             # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
turtle.circle(-600,40)       # 半径为负,画在海龟头部方向的右边# 海龟绘图结束,隐藏海龟
turtle.hideturtle()

-----end -----

Python Turtle 绘图[难度2星]:浪漫蒲公英(3种画法3种难度层层递进)相关推荐

  1. Python Turtle绘图[难度2星]:甜美棒棒糖(基础效果 / 加描边优化)

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者    案例1:棒棒糖(基础效果)       ...

  2. Python Turtle绘图[难度3星]:24节气倒计时(2.使用字典存储数据)

    "我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己." -- 初中信息技术教师  许华丽 Python Tur ...

  3. Python Turtle 绘图[难度2星]:一朵雪花(基础代码 、 加变量/加自定义函数优化)

    2022年北京冬奥会开幕式上"一朵雪花"贯穿始终,给大家印象深刻.今天我们也让海龟来绘制一朵雪花.先绘制一朵普通雪花,在下一期分享中再让海龟来绘制一朵"中国结雪花&quo ...

  4. 巴斯光年python turtle绘图__附源代码

    巴斯光年python turtle绘图__附源代码 本文目录: 一.python turtle海龟绘图效果图 写在前面的题外话 二.绘图人物简介 三.代码演示方法和代码命令解释 四.怎么才能正常运行p ...

  5. python turtle循环图案-有趣的Python turtle绘图

    原标题:有趣的Python turtle绘图 Python Turtle是Python的一个编程教育类库,越来越受到教育者的关注,近日,以"智能时代,逐梦成长"为主题的第5届全国青 ...

  6. python turtle 绘图速度用函数会快吗_有趣的Python turtle绘图

    专 题 Feature Story 16 \ China Science & Technology Education 文 _ 毛京宇/北京师范大学第三附属中学 魏云靖/北京市师达中学 有趣的 ...

  7. pythonturtle简单绘图_10分钟轻松学会 Python turtle 绘图

    10分钟轻松学会 Python turtle 绘图 python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即 ...

  8. python创意绘图-有趣的Python turtle绘图

    原标题:有趣的Python turtle绘图 Python Turtle是Python的一个编程教育类库,越来越受到教育者的关注,近日,以"智能时代,逐梦成长"为主题的第5届全国青 ...

  9. 十分钟轻松学会python-10分钟轻松学会python turtle绘图

    python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle 先说明一下turtl ...

  10. Python Turtle绘图 鼠年画老鼠爷

    Python Turtle绘图 鼠年画老鼠爷 前言 效果图 必要知识 源代码 后记 前言 本文介绍的是如何运用Python的turtle画一只老鼠.为什么会无聊想到做这个呢?还不是想获得24小时的请假 ...

最新文章

  1. Ubuntu 14.04下java开发环境的搭建--2--Eclipse的安装
  2. python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间的方法
  3. html中内联元素和块级元素的区别(整理版)
  4. 程序员交接文档_一个.NET程序员 2019 跳槽3次的悲惨故事
  5. 计算机控制系统b卷,计算机控制系统年期末考试b卷.docx
  6. SAP License:后SAP ECC 6.0 时代
  7. SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)...
  8. vmware的原理和影子页表
  9. atitit.二维码生成总结java zxing
  10. 如何调整eclipse字体大小
  11. Android 上千实例源码分析以及开源分析
  12. 有了这款神器,什么吃灰文件都统统现形~极速搜索工具Everthing
  13. CPU内部架构与工作原理
  14. centos 6 升级gcc
  15. [Azure]经典模式下关于云服务配置多个VIP的使用说明
  16. 男孩子学计算机好不好,适合男孩学的专业 男生最吃香的专业
  17. C语言高级用法---container_of()
  18. 信息管理与信息系统考研专业方向计算机,信息管理与信息系统考研专业方向
  19. 和菜鸟一起学证券投资之消费物价指数CPI
  20. shared_preload_libraries

热门文章

  1. 思维导图 基础篇(14)应用-阅读书籍
  2. go语言linux下载文件,linux-Golang安装包下载及环境配置
  3. 【转】零基础理解卷积神经网络
  4. 外贸线上线下开发客户的渠道干货分享
  5. 怎么把avi格式转换成mp4?教你无损转换avi格式
  6. 金山快盘显示服务器维护中,金山快盘总是显示“正在查找文件变化”无法同步的终极解决方法...
  7. 【报告分享】2020中国共享两轮车市场专题分析-易观智库(附下载)
  8. iOS开发 适配iOS10以及Xcode8
  9. django authentication_classes自定义权限验证类 authenticate
  10. 计算机和教师教学的应用,计算机在教学中的应用优势