前言

本文介绍如何用Python里的turtle模块,并给出绘制小猪佩奇的代码说明。

Turtle介绍

海龟绘图(Turtle Graphics)是1966年被开发出来的,专门给儿童学习编程语言,后来被移植到各种高级语言中,Python内置了turtle库,可以通过from turtle import *来导入,详细的官方文档见:https://docs.python.org/3.3/library/turtle.html,快速上手见:https://www.cnblogs.com/nowgood/p/turtle.html,一个很好的详细入门的系列博客:https://segmentfault.com/a/1190000017854607,https://segmentfault.com/a/1190000017867847,https://segmentfault.com/a/1190000017873112。

Turtle画图主要就是确定:

  • 坐标
    goto(x,y) #去到绝对坐标x,y处
    penup() #抬起笔
    pendown() #落笔,开始画。这两步中间加上方向语句可以去到相对位置处
  • 方向
    setheading(angle)#接下来绘画的绝对角度
    left(angle)#接下来绘画的相对角度,相对于上次方向向左转多少度
    right(angle)#接下来绘画的相对角度,相对于上次方向向右转多少度
  • 位移
    forward(distance) #或者fd
    backward(distance) #或者bd
    circle(半径,弧度) #画圆或者弧线

另外需要设置的:

  • 绘制流程中的语句
    down() #让会话窗口不要关闭
  • 美观相关的语句
    pensize(25) #画笔粗细
    pencolor('green') #画笔颜色,可选'red','green','blue','gray','brown'等
    fillcolor('red') #填充颜色
    bengin_fill() #需要填充的图形要在画之前加一句
    end_fill() #需要填充的图形要在画好后加一句
  • 界面设置的语句
    mode('standard') #切换坐标角度系统,'standard'是默认的,还有一个选择是’logo‘,因为turtle本来就是用LOGO语言开发的。
    # standard:以绘图界面的中心点为坐标圆点(0,0),以x坐标正方向为0度角,逆时针旋转
    # logo:以绘图界面的中心点为坐标圆点(0,0),以y坐标正方向为0度角,顺时针旋转
    shape('turtle') #三角形会变成小乌龟
    hideturtle() #小乌龟和三角形都不见了
    colormode(255) #可以将colormode设置为1.0或255。颜色三元组的r,g,b值必须在0...colormode范围内
    speed(0) #可选0,1,2,...,10,好像是0最快,10其次,10到1速度递减

再就是一些绘画基本元素:

  • 直线:forward(distance), backward(distance)
  • 圆:可以用circle(半径),半径的正负对应逆时针/顺时针方向画圆,也可以自己用一个正120边形来近似(120步,每步360/120=3度)
  • 圆弧:circle(半径,角度),半径的正负对应逆时针/顺时针方向画圆弧
  • 任意曲线:多段圆弧、圆拼接,拼接时根据需要更改方向
  • 椭圆:在画正120边形表示圆的基础上改一下每步的步长,有60步步长由短变长,有60步步长由长变短。

用Turtle绘制小猪佩奇

代码来自https://mp.weixin.qq.com/s/whtJOrlegpWzgisYJabxOg,我自己的理解加在注释里了,只要前面的看懂了这个代码不难理解。

from turtle import*def nose(x,y):#鼻子 (公众号:数据分析联盟)penup()#提起笔goto(x,y)#定位pendown()#落笔,开始画setheading(-30)#将乌龟的方向设置为to_angle/为数字(0-东、90-北、180-西、270-南)# 画椭圆begin_fill()#如果要画的图形需要填充,要在画图前begin_fill()a=0.4for i in range(120):if 0<=i<30 or 60<=i<90:a=a+0.08left(3) #向左转3度forward(a) #向前走a的步长else:a=a-0.08left(3)forward(a)end_fill()#填充完成#画鼻孔1的圆penup()setheading(90)forward(25)setheading(0)forward(10)pendown()pencolor(255,155,192)#画笔颜色setheading(10)#以上操作将画笔移动到了该画第一个鼻孔的位置,并设置好了颜色begin_fill()circle(5)color(160,82,45)#返回或设置pencolor和fillcolorend_fill()#画鼻孔2的圆penup()setheading(0)forward(20)pendown()pencolor(255,155,192)setheading(10)begin_fill()circle(5)color(160,82,45)end_fill()def head(x,y):#头color((255,155,192),"pink")penup()goto(x,y)setheading(0)pendown()begin_fill()setheading(180)circle(300,-30)circle(100,-60)circle(80,-100)circle(150,-20)circle(60,-95)setheading(161)circle(-300,15)penup()goto(-100,100)pendown()setheading(-30)a=0.4for i in range(60):if 0<=i<30 or 60<=i<90:a=a+0.08lt(3) #向左转3度fd(a) #向前走a的步长else:a=a-0.08lt(3)fd(a)end_fill()def ears(x,y): #耳朵color((255,155,192),"pink")penup()goto(x,y)pendown()begin_fill()setheading(100)circle(-50,50)circle(-10,120)circle(-50,54)end_fill()penup()setheading(90)forward(-12)setheading(0)forward(30)pendown()begin_fill()setheading(100)circle(-50,50)circle(-10,120)circle(-50,56)end_fill()def eyes(x,y):#眼睛 公众号 数据分析联盟color((255,155,192),"white")penup()setheading(90)forward(-20)setheading(0)forward(-95)pendown()begin_fill()circle(15)end_fill()color("black")penup()setheading(90)forward(12)setheading(0)forward(-3)pendown()begin_fill()circle(3)end_fill()color((255,155,192),"white")penup()seth(90)forward(-25)seth(0)forward(40)pendown()begin_fill()circle(15)end_fill()color("black")penup()setheading(90)forward(12)setheading(0)forward(-3)pendown()begin_fill()circle(3)end_fill()def cheek(x,y):#腮 公众号 数据分析联盟color((255,155,192))penup()goto(x,y)pendown()setheading(0)begin_fill()circle(30)end_fill()def mouth(x,y): #嘴 公众号 数据分析联盟color(239,69,19)penup()goto(x,y)pendown()setheading(-80)circle(30,40)circle(40,80)def body(x,y):#身体 公众号 数据分析联盟color("red",(255,99,71))penup()goto(x,y)pendown()begin_fill()setheading(-130)circle(100,10)circle(300,30)setheading(0)forward(230)setheading(90)circle(300,30)circle(100,3)color((255,155,192),(255,100,100))setheading(-135)circle(-80,63)circle(-150,24)end_fill()def hands(x,y):#手 公众号 数据分析联盟color((255,155,192))penup()goto(x,y)pendown()setheading(-160)circle(300,15)penup()setheading(90)forward(15)setheading(0)forward(0)pendown()setheading(-10)circle(-20,90)penup()setheading(90)forward(30)setheading(0)forward(237)pendown()setheading(-20)circle(-300,15)penup()setheading(90)forward(20)setheading(0)forward(0)pendown()setheading(-170)circle(20,90)def foot(x,y):#脚 公众号 数据分析联盟pensize(10)color((240,128,128))penup()goto(x,y)pendown()setheading(-90)forward(40)setheading(-180)color("black")pensize(15)fd(20)pensize(10)color((240,128,128))penup()setheading(90)forward(40)setheading(0)forward(90)pendown()setheading(-90)forward(40)setheading(-180)color("black")pensize(15)fd(20)def tail(x,y):#尾巴 公众号 数据分析联盟pensize(4)color((255,155,192))penup()goto(x,y)pendown()seth(0)circle(70,20)circle(10,330)circle(70,30)def setting():          #参数设置pensize(4)# hideturtle()        #使乌龟无形(隐藏)shape('turtle')colormode(255)      #将其设置为1.0或255.随后 颜色三元组的r,g,b值必须在0 .. cmode范围内color((255,155,192),"pink")setup(840,500)speed(10)def main():setting()           #画布、画笔设置nose(-100,100)      #鼻子head(-69,167)       #头ears(0,160)         #耳朵eyes(0,140)         #眼睛cheek(80,10)        #腮mouth(-20,30)       #嘴body(-32,-8)        #身体hands(-56,-45)      #手foot(2,-177)        #脚tail(148,-155)      #尾巴done() #调用done()使得窗口等待被关闭,否则将立刻关闭窗口if __name__ == '__main__':main()

输出:

Python语言基础学习(六)相关推荐

  1. Python语言基础学习

    1.Python可以干什么? 用来编写应用程序的高级编程语言(网络应用:网站.后台服务等:日常小工具:如系统管理员需要的脚本服务:将其他语言开发的程序包装起来,方便使用) 2.python语言的优缺点 ...

  2. Python语言基础学习不错的网站

    最近在学习Python语言,记录一些查到的相关资料,会持续更新..... Python基础学习:廖雪峰的网站 3.x版本:http://www.liaoxuefeng.com/wiki/0014316 ...

  3. Python语言基础学习报告(心得与体会)

    初学了几天的python这一编程语言,有一些感触. 对比起之前学的C语言,就拿刚学的python的print和C语言的printf来说,python比较简洁一点.同样是输出一样的"hello ...

  4. python语言基础(六)列表、元组、字典、集合

    列表(list) 列表介绍(掌握) 列表好比是盒子,把班级的学生的名字都放到盒子里. 列表是 Python 中最基本也是最常用的数据结构之一,它是一个 有序可重复的元素集合,是序列.从数据结构角度看, ...

  5. Ruby语言基础学习六:Ruby模块、引用其他程序、Mixins

    新建一个trig.rb程序并写入: #-*-coding:UTF-8 -*-#Ruby模块Module # 模块提供了一个命名空间和避免名字冲突.模块实现了 mixin 装置. module Trig ...

  6. Python的基础学习(六):函数

    文章目录 1. 函数的定义 2. 实参和形参 3. 传递实参的方法 3.1 位置实参 3.2 关键字实参 3.3 默认值 3.4 等效的函数调用 4. 传递实参的应用 4.1 禁止函数修改列表 4.2 ...

  7. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(四)(Python语言基础(2))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(四)(Python语言基础(2)) 第4讲 Python语言基础(2) 4.1 内置数据结构 4.1.1 序列数据结构(sequ ...

  8. python代码计算矩形面积_学习资料Python语言基础知识笔记以及答案

    01. Python语言基础知识等笔记: 02. Python作业答案: [例2-3]通过输入函数input()输入股票代码.股票名称.当天股票最高价和最低价,通过输出函数print()输出股票代码+ ...

  9. MOOC网神经网络与深度学习TensorFlow实践1——TensorFlow简介、python语言基础

    TensorFlow简介 TensorFlow环境的安装和使用 使用清华镜像的提示更改conda python包源 创建新的虚拟环境,在环境的交互界面用pip安装各种包. python语言基础

最新文章

  1. soap响应报文拼装_SOAP学习,构建实际的报文格式
  2. php页面时长,页面执行时间太长,请诸位大大帮忙看看
  3. CSS实现【表格内容超过一行的部分,用省略号代替】
  4. Cookie中不能有空格_前端小贴士 -- 全面了解Cookie
  5. HTML滚动条S默认最小值,css修改滚动条默认样式
  6. php7连接mysql测试代码
  7. 网络研讨会的邀请:SQL优化:你不是一个人在战斗
  8. ensp的下载与安装教程
  9. CAD中怎么管理线缆CAD图层?
  10. 职业定位测试/职业能力倾向测试
  11. 远程登录时由于帐户限制,你无法登录的解决办法[作者:Jackie]
  12. The server encountered an internal error that prevented it from fulfilling this request.解决方法
  13. ios 振动棒软件_iOS 14很棒
  14. 程序员去面试的梗!面试官:“哦了,明天来上班吧”
  15. otter实现数据同步,otter manger的安装
  16. 宝宝树全自动引流脚本软件高质量活跃粉丝
  17. Mybatis学习笔记_5、Mybatis动态SQL
  18. “裕同集团易普优APS项目启动大会”顺利召开
  19. 软件工程实践总结(个人)
  20. postfix mysql 虚拟用户_postfix+extmail+mysql虚拟用户邮件体系的搭建

热门文章

  1. OA行业分析:大型企业如何选型OA系统?
  2. oracle_ofsd,Oracle 11.2.0.4 x64 RAC扩展存储空间
  3. uniapp微信小程序仿聊天 输入框在软键盘隐藏显示时与底部距离,以及保证聊天消息滚动到底部 的问题以及解决办法
  4. docker使用数据卷创建nginx容器
  5. 常成员变量,常成员对象,常成员函数的详解
  6. 分布式ID详解(5种分布式ID生成方案)
  7. Spring配置文件中的import
  8. 2017.12.17笔记-关于角色和相机的控制
  9. 1013: 求两点间距离 C语言
  10. 如何使用python制作一个爱心发射器给女朋友一个惊喜!