Python语言基础学习(六)
前言
本文介绍如何用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语言基础学习(六)相关推荐
- Python语言基础学习
1.Python可以干什么? 用来编写应用程序的高级编程语言(网络应用:网站.后台服务等:日常小工具:如系统管理员需要的脚本服务:将其他语言开发的程序包装起来,方便使用) 2.python语言的优缺点 ...
- Python语言基础学习不错的网站
最近在学习Python语言,记录一些查到的相关资料,会持续更新..... Python基础学习:廖雪峰的网站 3.x版本:http://www.liaoxuefeng.com/wiki/0014316 ...
- Python语言基础学习报告(心得与体会)
初学了几天的python这一编程语言,有一些感触. 对比起之前学的C语言,就拿刚学的python的print和C语言的printf来说,python比较简洁一点.同样是输出一样的"hello ...
- python语言基础(六)列表、元组、字典、集合
列表(list) 列表介绍(掌握) 列表好比是盒子,把班级的学生的名字都放到盒子里. 列表是 Python 中最基本也是最常用的数据结构之一,它是一个 有序可重复的元素集合,是序列.从数据结构角度看, ...
- Ruby语言基础学习六:Ruby模块、引用其他程序、Mixins
新建一个trig.rb程序并写入: #-*-coding:UTF-8 -*-#Ruby模块Module # 模块提供了一个命名空间和避免名字冲突.模块实现了 mixin 装置. module Trig ...
- Python的基础学习(六):函数
文章目录 1. 函数的定义 2. 实参和形参 3. 传递实参的方法 3.1 位置实参 3.2 关键字实参 3.3 默认值 3.4 等效的函数调用 4. 传递实参的应用 4.1 禁止函数修改列表 4.2 ...
- 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(四)(Python语言基础(2))
[神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(四)(Python语言基础(2)) 第4讲 Python语言基础(2) 4.1 内置数据结构 4.1.1 序列数据结构(sequ ...
- python代码计算矩形面积_学习资料Python语言基础知识笔记以及答案
01. Python语言基础知识等笔记: 02. Python作业答案: [例2-3]通过输入函数input()输入股票代码.股票名称.当天股票最高价和最低价,通过输出函数print()输出股票代码+ ...
- MOOC网神经网络与深度学习TensorFlow实践1——TensorFlow简介、python语言基础
TensorFlow简介 TensorFlow环境的安装和使用 使用清华镜像的提示更改conda python包源 创建新的虚拟环境,在环境的交互界面用pip安装各种包. python语言基础
最新文章
- soap响应报文拼装_SOAP学习,构建实际的报文格式
- php页面时长,页面执行时间太长,请诸位大大帮忙看看
- CSS实现【表格内容超过一行的部分,用省略号代替】
- Cookie中不能有空格_前端小贴士 -- 全面了解Cookie
- HTML滚动条S默认最小值,css修改滚动条默认样式
- php7连接mysql测试代码
- 网络研讨会的邀请:SQL优化:你不是一个人在战斗
- ensp的下载与安装教程
- CAD中怎么管理线缆CAD图层?
- 职业定位测试/职业能力倾向测试
- 远程登录时由于帐户限制,你无法登录的解决办法[作者:Jackie]
- The server encountered an internal error that prevented it from fulfilling this request.解决方法
- ios 振动棒软件_iOS 14很棒
- 程序员去面试的梗!面试官:“哦了,明天来上班吧”
- otter实现数据同步,otter manger的安装
- 宝宝树全自动引流脚本软件高质量活跃粉丝
- Mybatis学习笔记_5、Mybatis动态SQL
- “裕同集团易普优APS项目启动大会”顺利召开
- 软件工程实践总结(个人)
- postfix mysql 虚拟用户_postfix+extmail+mysql虚拟用户邮件体系的搭建
热门文章
- OA行业分析:大型企业如何选型OA系统?
- oracle_ofsd,Oracle 11.2.0.4 x64 RAC扩展存储空间
- uniapp微信小程序仿聊天 输入框在软键盘隐藏显示时与底部距离,以及保证聊天消息滚动到底部 的问题以及解决办法
- docker使用数据卷创建nginx容器
- 常成员变量,常成员对象,常成员函数的详解
- 分布式ID详解(5种分布式ID生成方案)
- Spring配置文件中的import
- 2017.12.17笔记-关于角色和相机的控制
- 1013: 求两点间距离 C语言
- 如何使用python制作一个爱心发射器给女朋友一个惊喜!