【Python实践笔记】0001H Python绘图

在这里插入图片描述
图片来源于turtle库的练习


共勉:纸上得来终觉浅,绝知此事要躬行。


1. 了解turtle库


1.1 简介


turtle(海龟)库是turtle绘图体系的Python实现

  • turtle绘图体系:1969年诞生,主要用于程序设计入门
  • Python语言的标准库之一
  • 入门级的图形绘制函数库

扩展:什么是标准库和第三方库?

  • 标准库:随解释器直接安装到操作系统中的功能模块
  • 第三方库:需要经过安装才能使用的功能模块
  • 库Library、包Package、模块Module,统称模块

1.2 turtle的原理


turtle(海龟)是一种真实的存在,在画布上,可以看到一个箭头,可以想象它就是一只海龟

  • 有一只海龟,其实在窗体正中心,在画布上游走
  • 走过的轨迹形成了绘制的图形
  • 海龟由程序控制,可以变换颜色、改变宽度等

1.3 turtle的绘图窗体


在这里插入图片描述
一个像素,在turtle函数中的数值就是1


1.4 turtle空间坐标体系


在这里插入图片描述


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

  • 函数setup()设置窗体大小及位置
  • 4个参数中后两个可选
  • setup()不是必须的

在这里插入图片描述


1.5 turtle角度坐标体系


在这里插入图片描述


函数turtle.goto(x, y),是将海龟的坐标点进行移动函数。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


函数turtle.seth(angle),改变海龟运行角度:

  • seth()改变海龟行进方向
  • angle为绝对度数
  • seth()只改变方向但不行进
    在这里插入图片描述

在这里插入图片描述


1.6 turtle的色彩体系


什么是RGB?
由三种颜色构成的万物色

  • RGB指红蓝绿三个通道的颜色组合
  • - 覆盖视力所能感知的所有颜色
  • RGB每色取值范围0-255整数或0-1小数

常规RGB色彩
在这里插入图片描述
在这里插入图片描述


turtle的RGB色彩模式
默认采用小数值 可切换为整数值
turtle.colormode(mode)

  • 1.0:RGB小数值模式
  • 255:RGB整数值模式

2. 使用turtle

2.1 库引用


扩充Python程序功能的方式,基本格式:
import <库名>


或者:
使用from和import保留字共同完成
from <库名> import <函数名>
**from <库名> import **


或者
使用import和as保留字共同完成
import <库名> as <库别名>


2.2 画笔控制函数


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

  • turtle.penup() 别名 turtle.pu() 抬起画笔,海龟在飞行
  • turtle.pendown() 别名 turtle.pd() 落下画笔,海龟在爬行

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

  • turtle.pensize(width) 别名 turtle.width(width) 画笔宽度,海龟的腰围
  • turtle.pencolor(color) 别名 color为颜色字符串或r,g,b值 画笔颜色,海龟在涂装

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

  • 颜色字符串 :turtle.pencolor(“purple”)
  • RGB的小数值:turtle.pencolor(0.63, 0.13, 0.94)
  • RGB的元组值:turtle.pencolor((0.63,0.13,0.94))

2.3 运动控制函数


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

  • turtle.forward(d) 别名 turtle.fd(d) 【d: 行进距离,可以为负数】 向前行进,海龟走直线
  • turtle.circle(r, extent=None) 根据半径r绘制extent角度的弧形 【r: 默认圆心在海龟左侧r距离的位置;extent: 绘制角度,默认是360度整圆】

在这里插入图片描述


2.4 方向控制函数


控制海龟面对方向: 绝对角度 & 海龟角度

  • turtle.setheading(angle) 别名 turtle.seth(angle) angle: 行进方向的绝对角度 改变行进方向,海龟走角度
  • turtle.left(angle) 海龟向左转
  • turtle.right(angle) 海龟向右转
  • angle: 在海龟当前行进方向上旋转的角度

在这里插入图片描述


3. turtle实例程序


3.1 Python蟒蛇绘制


代码:

import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("green")
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()

运行结果:
在这里插入图片描述


3.2 数码管时钟绘制


代码:

import turtle
def drawLine(draw): #绘制单段数码管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    turtle.right(90)
    return
def drawDigit(digit): #根据数字绘制七段数码管
    drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)
    drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)
    drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)
    drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)
    drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)
    drawLine(True) if digit in [0, 1, 2, 4, 7, 8, 9] else drawLine(False)
    turtle.left(180)
    turtle.penup() #为绘制后续数字确定位置
    turtle.fd(20)
def drawDate(date): #获得要输出的数字
    for i in date:
        drawDigit(eval(i))
def main():
    turtle.setup(800, 350, 200, 200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate('20201029')
    turtle.hideturtle()
    turtle.done()
main()

运行结果:
在这里插入图片描述


3.3 科赫雪花绘制


代码:

import turtle
def koch(size, n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
           turtle.left(angle)
           koch(size/3, n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3      # 3阶科赫雪花,阶数
    koch(400,level)     
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
main()

运行结果:
在这里插入图片描述


4. 参考资料

【1】慕课网,北京理工大学,嵩天教授,《Python语言程序设计》声明:笔记中截图、部分代码来自该课程课件,非博主原创
【2】Python123:在线编程网站

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值