Python基本图形绘制

这次的例子是一个Python蟒蛇实例。从Python蟒蛇实例中,来认识和了解 Python 基本图形绘制的方法。

import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
    turtle.circle(40, 80)
    turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()

运行后得到的图形为下图所示样式: 

 

 

 

turtle库的使用

turtle(海龟)库是turtle绘图体系的Python实现,它是Python的标准库之一,也是入门级的图形绘制函数库。

Python计算生态 = 标准库 + 第三方库

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

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

turtle原理

可以想象,有一只海龟(turtle的英文意思是“海龟”),它在窗体的正中心,正在画布上游走。海龟走过的轨迹,就形成了绘制的图形。海龟的颜色、宽度(大小)等,都可以由我们设计的程序来进行控制。

turtle绘图窗体布局

turtle绘图窗体,就是Python绘图的一个画图空间,它的最小单位是像素。

用下边的这一个图,来看电脑屏幕坐标与turtle绘图窗体的关系。

我们可以看到,电脑屏幕的左上角坐标为(0,0),也就是屏幕坐标原点。在屏幕坐标系中和turtle窗体坐标系中,它们之间存在位置和大小的设计。咱们使用 turtle.setup(width, heigh, startx, starty) 函数,来设置启动turtle窗体的位置和大小。我们来看,这个函数有四个参数,宽度、高度、起始点的xy坐标值,对于startx和starty的值,是可选的,我们可以设置它的大小;这里的宽度和高度,指的是turtle窗体本身的宽度和高度。startx、starty(即起始点)的坐标值,是turtle窗体左上角的位置坐标,turtle窗体左上角位置坐标,是相对于屏幕的左上角位置的坐标。在基本图形绘制过程中,setup()函数并不是必须的,也即是可省略的。只有当你需要控制turtle的大小还有它在屏幕中的位置的时候,我们才需要使用setup()函数。

看下图的一个例子:

turtle.setup(800, 400, 0, 0),形成了一个窗体,它的高度是400,长度是800,窗体的左上角,就在显示屏的左上角,与屏幕左上角重合。如果,我们把后两个参数去掉, turtle.setup(800, 400),它长宽还没改变,不过窗体位置发生了变化。因为,没有指定窗体在屏幕中的位置,系统默认该窗体就在屏幕的正中心。

 

turtle空间坐标体系

在turtle窗体空间内部,形成了一个空间坐标体系,包含绝对坐标和海龟坐标两种。

绝对坐标,海龟最开始是在画布的正中心,坐标为(0, 0) ,海龟的运行方向向着画布的右侧。整个窗体的右方向为x轴、上方向为y轴。turtle.goto( x, y),让任意位置的海龟,到达指定的坐标。比如,利用turtle.goto(x, y),来绘制一个简单的图形。

海龟从坐标(0, 0)开始,首先运动到坐标(100, 100)的位置,而后依次运动到坐标(100, -100)、(-100, -100)、(-100, 100),(0, 0)的位置,并留下轨迹,直线到达。

海龟坐标

 

海龟坐标是以海龟本身为参照,海龟头指向的方向为前进方向,反方向为后退方向,左侧为左侧方向,右侧为右侧方向。所以,我们可以使用一些控制海龟的函数来直接使其运动,进而实现绘图功能。例如:turtle.fd(d),控制海龟向正前方向运动;turtle.bk(d),控制海龟向反方向运行;turtle.circle(r, angle),表示以海龟当前位置的左侧某一点为圆心,进行曲线运行。

turtle角度坐标体系

turtle.seth(angle) 来改变当前海龟的前进方向,angle表示海龟改变运行方向的角度为绝对角度,这个函数只改变方向并不运动(即不绘图)。

turtle.left(angle)让海龟向左转,turtle.right(angle)让海龟向右转。

利用这些函数,来实现一个小例子。

import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
turtle.done()                              #去掉这行,程序运行完毕后,自动关闭窗口

RGB色彩体系

turtle库使用了计算机中最常见的RGB色彩体系,所以,来介绍一下。

RGB色彩体系,由三种基本颜色构成了万物色。

RGB 指红绿蓝三个颜色通道,并由这三种颜色通道组成的而各种颜色。它能覆盖视力所能感知的几乎所有颜色。

在RGB的取值通道上,每个通道的取值范围是0——255整数0——1小数。

常用色彩RGB数值:

 

turtle库默认使用小数数值表示颜色,也可以切换为整数。

使用turtle.colormode(mode) 函数,来设置想要出现的颜色。

 

turtle库引用与import

库引用,它是扩充Python程序功能的方式,使用import保留字来完成库的引用,采用<a>.<b>()的编码风格。 

import的另一使用方法

利用from turtle import*方式编写蟒蛇代码

 

两种方法比较

 

<库名>.<函数名>形成了一个新函数,函数名更清晰,在代码量比较大的情况下,不会出错,也不会造成函数重名。

这种方法是直接使用库中的函数,代码量比较少,可是会出现函数重名(可能与用户自定义的函数重名,进而运行时发生冲突,造成运行错误)的情况,适合代码量不大,调用函数不多的情况。

第三种方法,import 和 as 保留字共同完成。

这个库别名,可以根据自己的实际情况来取一个符合自己当时程序的别名(外号),给调用的外部库关联一个更短、更适合自己的名字,对我们以后编写程序来说,会带来很多的便利。以Python蟒蛇为例来:

 

利用这种方法,代码量减少了,也防止了函数重名的问题。

turtle画笔控制函数

以“蟒蛇”为例,有四行代码使用了与画笔控制有关的函数。

 

画笔函数操作后一直有效,直到下次重新设置,一般画笔是成对出现的,例:penup()、pendown()。

turtle.penup()                      别名                    turtle.pu()

作用:抬起画笔,使海龟飞翔,不会在画布上留下轨迹。

turtle.pendown()                 别名                     turtle.pd()

作用:落下画笔,使海龟爬行,在画布上留下爬行的轨迹。

turtle.size(width)                 别名                     turtle.width(width)

作用:设置画笔宽度,海龟的腰围。

turtle.pencolor(color)          color为颜色字符串(即颜色对应的小写英文单词)或者RGB值。

作用:设置画笔颜色,改变海龟的涂装。

turtle.pencolor(color)中的color有三种形式

RGB元组值就是r, g, b 值外围加一个小括号,具体的等我学到了再说。 

这里出现了别名,别名就是同一函数功能的不同书写方式,功能一样,利用别名也可以少打几个代码不是。

turtle运动控制函数

在Python蟒蛇绘制实例中,有以下几行代码,设及到了turtle运动控制函数。

那么运动控制函数,能让海龟做什么呢?运动控制函数能控制海龟的行进方向还有让海龟走直线&走曲线。

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

作用:使海龟向前行进,让海龟走直线。

d表示行进距离,可以为负数,单位为像素。

turtle.circle(r, extent=None)      r为半径,extent为角度

作用:根据半径r,绘制一个角度为extent的弧形。

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

extent:绘制角度,默认是一个360°的整⚪。

方向控制函数

方向控制函数,控制海龟面对的方向:绝对角度和海龟角度。 

turtle.setheading(angle)            别名             turtle.seth(angle)

作用:改变海龟的行进方向,海龟走的角度。

angle:改变海龟的行进方向,设置成绝对角度。

海龟视角的转向方法

turtle.left(angle)                  让海龟左转。

turtle.right(angle)                让海龟右转。

需要注意:方向控制函数只改变海龟的行进方向,不会出现轨迹。

循环语句与range()函数

循环语句:指按一定次数循环执行的一组语句。

下边的三行代码就是Python蟒蛇绘制中的循环语句。

for 和 in 保留字完成循环结构

range()

看一个简单的循环例子:

range(5)里边的5表示循环五次,print有一种输出就是把每一个输出的元素加一个空格隔开,就是在加一个逗号。 

range()函数,产生循环计数序列的函数。有两种常用用途:

 

 

 

 

 

看到这儿,相信你对Python蟒蛇绘制的代码,已经能全部理解了吧?

截图来自:https://www.icourse163.org/learn/BIT-268001?tid=1003243006#/learn/announce,我也是看了一遍之后,再看在一遍才写的这些笔记。

  • 13
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值