Ventoso | project

vuePress-theme-reco Ventoso | project    2020
Ventoso | project Ventoso | project
TimeLine
Category
  • All
  • Python
Tag
Links
  • Blog
  • List
GitHub

Ventoso | project

5

Article

2

Tag

TimeLine
Category
  • All
  • Python
Tag
Links
  • Blog
  • List
GitHub
  • Python绘图(turtle库)初探

    • 超级语言
      • 问题分析
        • 实例编写
          • 基本介绍
            • turtle 绘图窗体布局
              • turtle 空间坐标体系
                • turtle 角度坐标体系
                  • RGB色彩体系
                    • 库引用与 import
                      • 库引用
                    • turtle 画笔控制函数
                      • 运动控制函数
                        • 方向控制函数
                          • 循环语句与range函数
                            • 代码分析

                            Python绘图(turtle库)初探

                            vuePress-theme-reco Ventoso | project    2020

                            Python绘图(turtle库)初探


                            Ventoso | project 2020-02-05 Python

                            # 超级语言

                            机器语言: 一种二进制语言,直接使用二进制代码表达指令, 计算机硬件 (cpu) 可直接执行

                            汇编语言: 是一种将二进制代码直接对应助记符的编程语言,与具体 cpu 型号有关

                            高级语言: 更接近自然语言,同时更容易描述计算机问题, 与具体型号无关,编译后运行

                            超级语言: 粘性整合已有程,具备强大的计算生态,具有庞大的计算生态,可以利用已有的代码功能 编程思维不再是刀耕火种,而是集成开发

                            机器语言并不适合编程

                            # Python 蟒蛇绘制实例

                            # 问题分析

                            设计蟒蛇基本形状

                            问题一:计算机绘图的原理是什么 ? 一段程序为什么可以形成窗口 ?

                            问题二:如何绘制,怎么开始,流程 ?

                            # 实例编写

                            #PythonDraw.py
                            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()
                            
                            1
                            2
                            3
                            4
                            5
                            6
                            7
                            8
                            9
                            10
                            11
                            12
                            13
                            14
                            15
                            16
                            17
                            import turtle # 程序关键
                            
                            1

                            import 是保留字,引入了一个绘图库,名字叫turtle(海龟绘图)

                            • 举一反三
                              • 理解蟒蛇绘制代码可以大致理解基本框架结构
                              • 一些程序参数可以修改
                              • 颜色,方向,长度
                              • 蟒蛇绘制是各类绘图问题的代表

                            # Turtle 库的使用

                            # 基本介绍

                            turtle 是 turtle 绘图体系的 python 体现

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


                            Python计算生态

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

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

                            库 Library ,包 Package ,模块 Module (暂时统称为模块)

                            turtle 原 (wan) 理 (fa)

                            turtle(海龟)是一种真实存在的,有一只海龟,其实在窗体的正中心,在画布上游走,走过的轨迹就形成了绘制的图形。

                            # turtle 绘图窗体布局

                            窗体是 turtle 的一个画布空间,其最小单位是像素,窗体的左上角是 turtle 绘图窗口的坐标原点

                            turtle.setup(width, height, startx, starty)
                            
                            1
                            • turtle.setup() 函数可以 设置窗体大小及位置,四个参数的后两个是可选的
                            • setup() 函数不是必须的,不写时默认处于屏幕正中心

                            里面的宽度和高度指的是窗体本身的宽高

                            # turtle 空间坐标体系

                            分海龟坐标和绝对坐标

                            # 绝对坐标

                            • 绝对坐标:由窗体正中心为原点,构成的一个绝对坐标系,x 轴向右延申, y 轴向上延申

                              • 可以利用空间坐标来控制画笔(海龟)的行进位置
                              turtle.goto( x, y) #函数参数应该填入以觉得坐标系为坐标系的对应坐标点,该函数可以控制海龟达到坐标位置
                              
                              1

                            # 海龟坐标

                            海龟坐标:以海龟为坐标原点,当前新建方向为前进方向,反方向 为后退方向,左侧为左侧方向,右侧为右侧方向建立一个坐标系,就叫海龟坐标系

                            • 可以使用一些控制海龟的运动的函数
                            turtle.circle(r,angle) # 指的是以海龟当前的位置,左侧的某一个点为圆心,进行曲线运动
                            turtle.bk(d) # 向海龟的后退方向运行
                            turtle.fd(d) #指的是向海龟的正前方向运行
                            
                            1
                            2
                            3

                            # turtle 角度坐标体系

                            # 绝对角度

                            在空间坐标体系中,形成了一个绝对坐标体系

                            • x 轴正方向表示 0 或者 360 度,y 轴的正方向表示 90 或者 -270 度,以此类推,就形成了一个绝对角度体系

                            • turtle.seth(angle)
                              
                              1
                              • 可以使用 seth() 函数改变海龟行进方向
                              • seth() 只改变方向但不行进
                              • angle 为绝对度数

                            # 海龟角度

                            • 为了更好的改变海龟运动的方向,从海龟坐标的角度,对于海龟的方向,可以使用左右的方式来改变

                              • turtle.left(angle)# 向左
                                turtle.right(angle) # 向右
                                
                                1
                                2

                            # RGB色彩体系

                            turtle库使用了计算机最常用的色彩体系:RGB

                            # R.G.B 色彩模式

                            由三种颜色构成万物色

                            RGB 指的是红蓝绿三个通道的颜色组合,覆盖视力所能感知到的所有颜色。

                            RGB 每个个通道的取值范围是 0-255 的整数或者 0-1 的小数。

                            • 数值类型切换:

                              turtle.colormode(mode) 	# mode可填入 1.0和 255
                              
                              1
                              • 1.0:RGB 小数值模式
                              • 255 :RGB 小数值模式

                            # turtle 语法元素分析

                            # 库引用与 import

                            实例中大部分有很多 turtle. 的形式

                            这是 <a>.<b>()的编码风格 。

                            # 库引用

                            是扩充 python 程序功能的方式

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

                              • import<库名>
                                <库名>.<函数名>(<函数参数>)
                                
                                1
                                2
                            • import 的更多用法

                              • 使用from和import保留字共同完成
                            from<库名>import<函数名>
                            from<库名>import*
                            <库名>(<函数名>)
                            
                            1
                            2
                            3

                            使用时就无需使用<库名>.<函数名>的格式了

                            使用 form + import 的

                            优点:使用库提供的函数更加简单便捷

                            缺点:可能会出现函数名同名的问题

                            • 不会出现函数名同名的问题

                              import <库名>
                              <库名>.<函数名>(<函数参数>)
                              # 是新程序中的函数名
                              
                              1
                              2
                              3
                            • 可能会出现函数名同名问题

                              from<库名>import<函数名>
                              from<库名>import*
                              <函数名>(<函数参数>)
                              # 使用库中的函数的函数名就是独立的函数名
                              
                              1
                              2
                              3
                              4
                            • 其他方式(可能是最优)

                              import<库名>as<库别名>
                              <库别名>.<函数名>(<函数参数>)
                              
                              1
                              2

                              给调用的外部库关联一个更短,且更适合自己的一个名字

                            # turtle 画笔控制函数

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

                            函数名 别名 属性
                            turtle.penup() turtle.pu() up,即抬起画笔,海龟在飞行,不在画布上留下痕迹
                            turtle.pendown() turtle.pd() 即落下画笔,让海龟爬行,在画布上留下痕迹
                            --- --- ---
                            turtle.pensize(width) turtle.width(width) 画笔宽度,海龟的腰围
                            turtle.pencolor(color) / 画笔颜色,海龟在涂装
                            color 为颜色字符串或 r,g,b 值
                            参数表达有三种形式:
                            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.forwad(d) turtle.fd(d) 向前行进,海龟走直线
                            d:行进距离,可以为负数
                            turtle.circle(r, extent=None) / 根据半径r绘制extent角度的弧度

                            r: 默认圆心在海龟左侧r距离的位置
                            extent:绘制角度,默认是 360度 整圆
                            默认情况下圆心在海龟左手侧距离为r的地方

                            # 方向控制函数

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

                            函数名(控制绝对角度) 别名 属性
                            turtle.setheading(angle) turtle.seth(angle) 改变行进方向,海龟走角度
                            angle :改变行进方向,海龟走角度
                            函数名(控制海龟角度) 别名 属性
                            左:tuetle.left(angle) 右: turtle.right(angle) / 海龟向以海龟坐标为坐标系,左或右转
                            angle : 海龟在当前行进方向上旋转的角度

                            方向控制函数只改变海龟的方向

                            # 循环语句与range函数

                            • 循环语句
                              • 按照一定次数循环执行一组语句
                            for <变量> in range (<参数>)
                            	<被循环执行的语句>
                            
                            1
                            2
                            • range的参数就是循环的次数
                            • <变量>表示每次循环的计数,0到<次数>-1

                            (略有迷惑......)

                            print() 函数中间参数用逗号隔开,输出结果会自带空格

                            • range() 函数:产生循环计数序列
                              • range(N):产生0到N-1的整数序列,共N个
                              • range(M,N):产生从M开始到N-1的整数序列,共N-M个

                            # 代码分析

                            #PythonDraw.py
                            import tutle # 程序关键。
                            # 初始化
                            tutle.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)
                            turtle.fd(40 * 2/3)
                            turtle.done() #程序不会退出
                            
                            1
                            2
                            3
                            4
                            5
                            6
                            7
                            8
                            9
                            10
                            11
                            12
                            13
                            14
                            15
                            16
                            17
                            18
                            19
                            20
                            21

                            # 我的小节

                            于 五月一日 再编辑整理

                            本文开篇引入 超级语言 的概念,介绍了一些计算机编程语言的特点等

                            通过编写 python 蟒蛇绘制实例,学习 turtle 库的使用以及 turtle 语法元素

                            Edit this page