嵩天python课程笔记第二周:python基本图形绘制

第二周:python基本图形绘制

2.1 深入理解python语言

2.1.1 计算机技术的演进

  • 1946-1981:计算机系统结构时代-----CPU,操作系统…-----解决计算能力问题

  • 1981-2008:网络和视窗时代------Windows视窗操作系统,互联网-----解决人机交互(通过Windows视窗),机机交互(通过网络)

2008安卓系统诞生

  • 2008-2016:复杂信息系统时代------云计算,网络安全,大数据-----解决数据问题

2016年计算机Alphgo打败柯洁。

  • 2016- :人工智能时代------解决人类自身问题,使用计算机帮助人类解决一些问题

2.1.2 编程语言的多样初心

编程语言也是一个江湖

  • C语言:指针、内存、数据类型

语言本质:理解计算机系统机构

解决问题:性能,诞生于计算机系统结构时代,是用来写操作系统的语言

  • Java语言:对象、跨平台、运行时

语言本质:理解主客体的关系

解决问题:跨平台

  • C++:对象、多态、继承

语言本质:理解主客体的关系

解决问题:大规模程序

  • VB(.NET):对象、按钮、文本框

语言本质:理解交互逻辑

解决问题:桌面应用(使用较少了)

  • python:编程逻辑,第三方库

语言本质:理解问题的求解

解决问题:各类问题(适合于所有的专业)

2.1.3 python语言的特点

-通用语言、强制可读性、较少的底层语法元素、支持多种编程方式、支持中文字符

-语法简洁,代码行数少

-生态高产,超13万个第三方库,避免重复造轮子,提高代码的复用

不可替代的前端技术:HTML/CSS/JS

后端语言候选之一:python

工具决定思维

2.1.4 “超级语言”的诞生

机器语言:二进制语言,是CPU可以直接执行的语言,但是可读性非常差,与CPU型号有关

汇编语言:将二进制代码直接对应助记符,需要汇编器转换,与CPU型号有关

上述两种语言不适合编程

高级语言:更接近于自然语言,同时更容易描述计算问题,需要编译器或解释器转换成计算机CPU可以执行的二进制代码,与CPU型号无关

超级语言:不仅要接近自然语言,不仅要与CPU型号无关,还要可以粘性整合已有的程序,具备庞大的计算生态

现在关键是怎么复用代码,怎么使用已有的程序模块去实现位置的功能

python是目前具有最庞大计算生态的语言-----超级语言

2.2 实例2:python蟒蛇的绘制

2.2.1 “python蟒蛇绘制”问题分析

img

2.2.2 “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()

2.2.3 “python蟒蛇绘制”举一反三

程序参数改变

颜色:黑色,白色,七彩色

长度:1,2,3节长度

爬行方向:向左走,斜着走

计算问题扩展

绘制其他形状:五角星,圆形等等

2.3 模块1:turtle库的使用

2.3.1 turtle库基本介绍

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

turtle库是python语言的标准库之一

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

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

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

-库Librarry,包Package,模块Module,统称为模块

2.3.2 turtle绘图窗体布局

img
# setup()函数用来设置窗体的大小和位置
turtle.setup(width, height, startx, starty)
# 四个参数:窗体本身的宽度和高度,窗体的显示位置(相对于电脑屏幕左上角的位置)
img

2.3.3 turtle空间坐标体系

turtle空间坐标体系包括:绝对坐标和海龟坐标

  1. 绝对坐标

    img
    turtle.goto(x,y)  # 该函数表示海龟从窗体的中心位置出发,到达终点(x,y)的位置
    

    例如:

    img
  2. 海龟坐标

    img img

2.3.4 turtle角度坐标体系

  1. 绝对角度

    img img
  2. 海龟角度

    img img

2.3.5 RGB色彩体系

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

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

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

img img img
turtle.colormode(1.0) # 表示下面的代码中RGB使用小数值
turtle.colormode(255) # 表示下面的代码中RGB使用整数值

2.4 turtle程序语法元素分析

2.4.1 库引用与import

库引用:扩充python程序功能的方式。

使用import保留字完成,采用.()编码风格

import<库名>

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

import的多种使用方法:

1.import<库名>

2.from<库名>import<函数名>

3.from<库名>impot*

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

4.import<库名>as<库别名>

<库别名>.<函数名>(<函数参数>) 给调用的外部库关联一个更短、更适合自己的名字

# 库引用方法一                                         # 库引用方法三
import turtle                                        from turlte import*
turtle.setup(650, 350, 200, 200)                     setup(650, 350, 200, 200)
turtle.penup()                                       penup()
turtle.fd(-250)                                      fd(-250)
turtle.pendown()                                     pendown()
turtle.pensize(25)                                   pensize(25)
turtle.pencolor("purple")                            pencolor("purple")
turtle.seth(-40)                                     seth(-40)
for i in range(4):                                   for i in range(4):
    turtle.circle(40, 80)                                circle(40, 80)
    turtle.circle(-40, 80)                               circle(-40, 80)
turtle.circle(40, 80/2)                              circle(40, 80/2)
turtle.fd(40)                                        fd(40)
turtle.circle(16, 180)                               circle(16, 180)
turtle.fd(40 * 2/3)                                  fd(40 * 2/3)
turtle.done()                                        done()

# 虽然方法三必须要再每次都输入库名,但是当程序数量巨大,会造成函数名的重复。
# 库引用方法四(比较简便,且不容易出错)
import turtle as t
t.setup(650, 350, 200, 200)
t.penup()
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
    t.circle(40, 80)
    t.circle(-40, 80)
t.circle(40, 80/2)
t.fd(40)
t.circle(16, 180)
t.fd(40 * 2/3)
t.done()

2.4.2 turtle画笔控制函数

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

  1. turtle.penup() 抬起画笔,相当于海龟在飞行,此时画笔并不在画布上留下线条

  2. turtle.pendown() 画笔落下,让海龟爬行

一般是使用turtle.penup让海龟飞到一个位置,然后再turtle.pendown,使海龟落下,然后让海龟爬行,在画布上面画出图像。

  1. turtle.pensize(width) 设置画笔的宽度,这个宽度相当于海龟的腰围。也可以使用别名turtle.width(width),功能是一样的。

  2. 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))

img

2.4.3 turtle运动控制函数

控制海龟行进方向,可以使海龟走直线或者走曲线

  1. turtle.forward(d),别名turtle.fd(d) 。向前行进,海龟走直线。d:行进距离,可以是负数,代表海龟倒退。单位是像素

  2. turtle.circle(r, extent=None)。根据半径r绘制extent角度的弧度,r:是海龟行进曲线的半径,圆心默认在海龟左侧r距离的位置上

    img

2.4.4 turtle方向控制函数

控制海龟面对的方向,包含绝对角度和海龟角度

  1. turtle.setheading(angle),别名turtle.seth(angle)。它改变的是绝对角度。可以改变海龟的朝向,使得海龟转一个角度。angle指的是将当前海龟方向改变一个角度。
img
  1. turtle.left(angle)。在海龟视角下向左转。

    turtle.right(angle)。在海归视角下向右转。angle表示在海龟当前行进方向上旋转的角度。他们改变的是海龟角度

2.4.5 循环语句与range()函数

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

​ <被循环执行的语句>

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

for i in range(5):
   print(i)
# 结果:
0
1
2
3
4
for i in range(5):
    print('Hello:', i)  # print参数之间加逗号的作用是输出有空格
# 结果:
Hello: 0
Hello: 1
Hello: 2
Hello: 3
Hello: 4  

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

—range(N) 产生0到N-1的整数序列,共有N个数。例如range(5) 0,1,2,3,4

—range(M,N)产生M到N-1的整数序列,共N-M个数。例如 range(2,5) 2,3,4

—最重要的作用是和for in搭配产生计数循环

2.4.6 “python蟒蛇绘制”代码分析

import turtle   # 引入turtle库
turtle.setup(650, 350, 200, 200)  # 设置窗体的大小和位置
turtle.penup()  # 使海龟画笔抬起,即使得海龟飞起来
turtle.fd(-250) # 使得海龟后退250像素,即海龟从中心位置移动到窗体左侧的位置
turtle.pendown() # 海龟画笔落下
turtle.pensize(25) # 设置海龟画笔的宽度为25
turtle.pencolor("purple") # 设置海龟画笔的颜色为紫色,也可以设置为其他的颜色
turtle.seth(-40) # 设置绝对角度,使得海龟在当前方向逆时针旋转40度
for i in range(4):
    turtle.circle(40, 80) # 在当前方向以40为半径,(圆心在左侧)走一个80度的弧度
    turtle.circle(-40, 80) # 在当前方向以40为半径,(圆心在右侧)走一个80度的弧度
# 如此循环四次即可获得蟒蛇的四节身体
turtle.circle(40, 80/2) # 在当前方向以40为半径,(圆心在左侧)走一个40度的弧度,确定好蟒蛇的脖子
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done() # 程序执行完毕后,保持窗体不关闭。需要手动关闭。

你可能感兴趣的:(嵩天python课程笔记,python)