我们可以尝试用python的自带turtle库绘制一条蟒蛇

首先我们设计一下蟒蛇的基本形状

我们先把这段蟒蛇绘制的实例代码贴出来,各位可以在自己的本地运行一下看看效果,然后我们再继续分析代码:

 1 #PythonDraw.py
2 import turtle
3 turtle.setup(650, 350, 200, 200)
4 turtle.penup()
5 turtle.fd(-250)
6 turtle.pendown()
7 turtle.pensize(25)
8 turtle.pencolor("purple")
9 turtle.seth(-40)
10 for i in range(4):
11 turtle.circle(40, 80)
12 turtle.circle(-40, 80)
13 turtle.circle(40, 80/2)
14 turtle.fd(40)
15 turtle.circle(16, 180)
16 turtle.fd(40 * 2/3)
17 turtle.done()

程序关键:import保留字,引入了一个绘图体系,名字叫:turtle,就是海龟

学会海龟绘图体系之后,我们可以完成更加复杂的绘制:五角星绘制、国旗绘制、机器猫绘制

掌握了绘制一条线的方法,就可以绘制整个世界

turtle库概述:

turtle库的turtle绘图体系的python实现

turtle绘图体系:1969年诞生,主要用于程序设计入门

        python的标准库之一,入门级的图形绘制函数库

python的计算生态:python标准库+第三方库

标准库:随解释器直接安装到操作系统的功能模块

第三方库:需要经过安装才能使用的功能模块

turtle的原理:

turtle是一种真实的存在,有一只海龟,在窗体的正中心,在画布上游走

走过的轨迹形成了绘制的图形

海龟由程序控制,可以变换颜色、改变宽度等

turtle的绘图窗体:

turtle的一个画布空间,最小单位是像素

turtle的绘图窗体:

turtle的绘图窗体:

1 turtle.setup(width, height, startx, starty)

注意三点:

1、setup设置船体的大小及位置

2、4个参数后两个参数可选

3、setup不是必须的

turtle空间坐标体系

绝对坐标:

1 turtle.goto(x,y)

这句是常用语法,让海龟爬

我们试试如下的代码,然后看看运行结果

1 import turtle
2 turtle.goto( 100, 100)
3 turtle.goto( 100,-100)
4 turtle.goto(-100,-100)
5 turtle.goto(-100, 100)
6 turtle.goto(0,0)

我们运行之后看看效果,如下图所示:

海龟的空间坐标体系

turtle.circle(r,angle),海龟左侧圆心,半径为r画圆

1 import turtle
2 turtle.circle(100,90)
3 turtle.done()

动手试试上述代码,会加深对circle函数的理解

下面我们了解一下海龟库的角度坐标体系

turtle.seth(angle)

1、seth() 改变乌龟行进方向

2、angle为绝对角度

3、seth只改变方向但不行进

海龟也有相对角度

1 turtle.left(angle)
2 turtle.right(angle)

我们来试试如下代码的绘制效果,来体会Turtle的角度体系

1 import turtle
2 turtle.left(45)
3 turtle.fd(150)
4 turtle.right(135)
5 turtle.fd(300)
6 turtle.left(135)
7 turtle.fd(150)
8 turtle.done()

绘制结果如下图所示:

下面我们涉及一下RGB色彩体系

万物色都可以由三种颜色构成

RGB指的是红绿蓝三个通道的颜色组合

覆盖视力所能感知的所有颜色

RGB每色取值范围是0-255或0-1小数

常用的RGB色彩:

英文名称 RGB整数值 RGB小数值 中文名称
white 255,255,255 1,1,1 白色
yellow 255,255,0 1,1,0 黄色
magenta 255,0,255 1,0,1 洋红
cyan 0,255,255 0,1,1 青色
blue 0,0,255 0,0,1 蓝色
black 0,0,0 0,0,0 黑色
seashell 255,245,238 1,0.96,0.93 海贝色
gold 255,215,0 1,0.84,0 金色
pink 255,192,203 1,0.75,0.80 粉红色
brown 165,42,42 0.65,0.16,0.16 棕色
purple 160,32,240 0.63,0.13,0.94 紫色
tomato 255,99,71 1,0.39,0.28 番茄色

turtle的RGB色彩模式

默认采用小数值,可以切换成整数值:

1 turtle.colormode(mode)
2 #1.0:RGB小数值模式
3 #255:RGB整数值模式

turtle程序语法元素分析:

库引用:

扩充python程序功能的方式

用import保留字完成,采用<a>.<b>()编码风格

import <库名>

<库名>.<函数名>(<函数参数>)

 1 #PythonDraw.py
2 import turtle
3 turtle.setup(650, 350, 200, 200)
4 turtle.penup()
5 turtle.fd(-250)
6 turtle.pendown()
7 turtle.pensize(25)
8 turtle.pencolor("purple")
9 turtle.seth(-40)
10 for i in range(4):
11 turtle.circle(40, 80)
12 turtle.circle(-40, 80)
13 turtle.circle(40, 80/2)
14 turtle.fd(40)
15 turtle.circle(16, 180)
16 turtle.fd(40 * 2/3)
17 turtle.done()

可是,超级多的turtle,好烦,咋办????

import的更多用法:

使用from和import保留字共同完成

from <库名> import <函数名>

from <库名> import *

<函数名>(<函数参数>)

 1 #PythonDraw.py
2 from turtle import *
3 setup(650, 350, 200, 200)
4 penup()
5 fd(-250)
6 pendown()
7 pensize(25)
8 pencolor("purple")
9 seth(-40)
10 for i in range(4):
11 circle(40, 80)
12 circle(-40, 80)
13 circle(40, 80/2)
14 fd(40)
15 circle(16, 180)
16 fd(40 * 2/3)
17 done()

这么好的方法咋不早说呢???

因为第一种方法不会出现函数重名问题,而第二种方法会出现函数重名问题

import的更多用法

使用import和as保留字共同完成

import <库名> as <库别名>

<库别名>.<函数名>(<函数参数>)

相当于给库起个简单的名字,如:狗娃

 1 #PythonDraw.py
2 import turtle as t
3 t.setup(650, 350, 200, 200)
4 t.penup()
5 t.fd(-250)
6 t.pendown()
7 t.pensize(25)
8 t.pencolor("purple")
9 t.seth(-40)
10 for i in range(4):
11 t.circle(40, 80)
12 t.circle(-40, 80)
13 t.circle(40, 80/2)
14 t.fd(40)
15 t.circle(16, 180)
16 t.fd(40 * 2/3)
17 t.done()

这个方法比较推荐,也简洁了代码书写。

下面我们来分析下面这段代码的画笔控制函数

1 turtle.penup()
2 turtle.fd(-250)
3 turtle.pendown()
4 turtle.pensize(25)
5 turtle.pencolor("purple")

画笔操作后一直有效,一般成对出现

turtle.penup() #抬起画笔,海龟在飞 别名:turtle.pu()

turtle.pendown() #方向画笔,海龟在爬 别名:turtle.pd()

画笔设置后一直有效,直到下次重新设置

turtle.pensize(width) 别名:turtle.width(width)

  画笔宽度,也就是海龟的腰围

turtle.pencolor(color) color为颜色字符串或者RGB值

  画笔颜色,海龟在涂装

pencolor(color)中的color参与可以有三种形式

1、颜色字符串 :turtle.pencolor("purple")

2、RGB的小数值:turtle.pencolor(0.63,0.13,0.94)

3、RGB的元组值:turtle.pencolor((0.63,0.13,0.94))

turtle的运动控制函数

控制海龟行进:走直线&走曲线

turtle.forward(d)  别名turtle.fd(d)

向前行进,海龟走直线

d:行进距离,可以为负数

turtle.circle(r,extend=None)

  根据半径r绘制extend角度的弧形

r:默认圆心在海龟左侧r距离的位置

extent:绘制角度,默认360度整圆

方向控制函数

turtle.seth(45)

turtle.seth(-135)

控制海龟面对的方向:绝对角度和相对角度

turtle.left(angle)  海龟向左转

turtle.right(angle)  海龟向右转

angle:在海龟当前行进方向上旋转的角度

循环语句与range()函数

1 for i in range(4):
2 tirtle.circle(40,80)
3 tirtle.circle(-40,80)

按照一定次数循环执行一组语句

for <变量> in range(<次数>):

  <被循环执行的语句>

<变量>表示每次循环的计数,0到<次数>-1

range()函数:产生循环计数序列

range(N) 产生0到N-1的整数序列,共N个

range(M,N)产生M到N-1的整数序列,共N-M个

第四章 python的turtle库的运用的更多相关文章

  1. [Python学习笔记][第四章Python字符串]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...

  2. [Python笔记][第四章Python正则表达式]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...

  3. Python使用turtle库与random库绘制雪花

    记录Python使用turtle库与random库绘制雪花,代码非常容易理解,画着玩玩还是可以的. 完整代码如下:   效果图如下:  

  4. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  5. Python之turtle库-小猪佩奇

    Python之turtle库-小猪佩奇 #!/usr/bin/env python # coding: utf-8 # Python turtle库官方文档:https://docs.python.o ...

  6. 《Python CookBook2》 第四章 Python技巧 对象拷贝 && 通过列表推导构建列表

    (先学第四章) 对象拷贝 任务: Python通常只是使用指向原对象的引用,并不是真正的拷贝. 解决方案: >>> a = [1,2,3] >>> import c ...

  7. Python中turtle库的使用

    Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...

  8. python使用turtle库绘制奥运五环

    效果图: #奥运五环 import turtle turtle.setup(1.0,1.0) #设置窗口大小 turtle.title("奥运五环") #蓝圆 turtle.pen ...

  9. Python:turtle库的使用及图形绘制

    目录 一.绘制一个八边形 二.绘制一个八角图形 三.简述问题 四.循环程序设计 五.绘制一个自己喜欢的图形 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle im ...

随机推荐

  1. mysql中的实例、数据库关系简介

    MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系 统上表现就是一个服务进程,即进程(通过多种方法可以创建多实例,再安装一个端口号不同的mysql,或者通过workben ...

  2. Servlet中的过滤器和监听器

    1.什么是过滤器? Servlet规范中定义的一种特殊的组件,用来拦截容器的调用过程.容器收到请求之后,首先调用过滤器,然后再调用Servlet 2.生命周期: 1.servlet:servlet的生 ...

  3. Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作

    这篇笔记主要是从Python官网的Tutorial上截取下来,再加上个人理解 1. 在交互模式下,下划线'_'还可以表示上一步的计算结果 2.引号转义问题. 从下图总结的规律是,字符串里的引号如果和引 ...

  4. YOLOvi(i=1,2,3,4)系列

    YOLOvi(i=1,2,3,4)系列 YOLOv4论文链接:https://arxiv.org/pdf/2004.10934.pdf YOLOv4源码链接:https://github.com/Al ...

  5. SQL进阶总结(一)

    学而不思则罔,趁着假期好好总结下SQL的编程知识. 掌握SQL,首先有两个知识点要明确,要贯穿在我们整个学习SQL的过程中. SQL 不同于之前学习的面向过程.面向编程语言,SQL是一门面向集合的编程 ...

  6. 用Taro写一个微信小程序(三)—— 配置dva

    一.关于dva dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻 ...

  7. FreeSql使用WithSql+ ToSQL 查询数据

    FreeSql是一个支持.NET Core 2.1+..NET Framework 4.0+ 以及 Xamarin的ORM(Object Relational Mapping)对象关系映射的组件 支持 ...

  8. 安全Web服务器

    https协议: 443 端口 虚拟Server0: 1.部署 网站证书(营业执照)# cd /etc/pki/tls/certs/ # wget http://classroom.example.c ...

  9. Task06:综合练习

    练习一: 各部门工资最高的员工(难度:中等) 创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--- ...

  10. UF_LAYER 图层操作

    Open C uc5007uc5008uc5009UF_LAYER_ask_category_infoUF_LAYER_ask_category_tagUF_LAYER_ask_statusUF_LA ...