*该系列内容来自于:中国大学MOOC(幕客)-python语言程序设计
Python语言程序设计_北京理工大学_中国大学MOOC(慕课)
第二章 Python基本图形绘制
方法论:python语言及海龟绘图体系
实践能力:初步学会使用python绘制简单图形
2.1 深入理解Python语言
2.1.1 计算机技术的严谨
1、计算机技术演进过程
①计算机系统结构时代(35年):1946-1981 计算能力问题 C
②网络和视窗时代(27年):1981-2008 交互问题 JAVA VB
2008年 安卓操作系统诞生
③复杂信息系统时代(8年) :2008-2016 数据问题 PYTHON
云计算、网络安全、大数据
2017年5月27日,柯洁最终 0:3 AlphaGo
~~~新计算时代
④人工智能时代:2017- 人类的问题
2.1.2 编程语言的多样性
1、不同变成语言初心和适用对象
①C
学习内容:指针、内存、数据结构
语言本质:理解计算机系统结构
解决问题:性能
适用对象:计算机类专业
②Java
学习内容:对象、跨平台、运行时
语言本质:理解主客体关系
解决问题:跨平台
适用对象:软件类专业
③C++
学习对象:对象、多态、继承
语言本质:理解主客体关系
解决问题:大规模程序
适用对象:计算机类专业
④VB
学习对象:对象、按钮、文本框
语言本质:理解交互逻辑(人机)
解决问题:桌面应用
适用对象:不确定
⑤python
学习对象:编程逻辑、第三方库
语言本质:理解问题求解
解决问题:各类问题
适用对象:所有专业
2、2018年后的计算环境:
①计算机性能不再是解决一般问题的瓶颈
②移动互联网广泛普及
③大数据、云计算、物联网、信息安全、人工智能等需求爆发
2.1.3 python语言的特点
1、python语言:
通用语言、脚本语言、开源语言、跨平台语言、多模型语言
2、特点与优势
【语法简洁】10x
①强制可读性
②较少的底层语法元素
③多种编程方式
④支持中文字符
⑤C代码量的10%
【生态高产】10x
⑥快速增长的计算生态
⑦避免重复造轮子
⑧开放共享
⑨跨操作系统平台
⑩13万第三方库
3、如何看待python语言
-C/C++:底层、内存、接口~C python调用,不用跟内存打交道(python归python,C归C)
-Java:针对特定开发和岗位需求
-html/css/js:不可替代的前端技术,全栈能力
-其他语言:R/Go/Matlab等,特定领域
-python:
是最高产的程序设计语言
掌握抽象并求解计算问题综合能力的语言
了解产业界解决复杂计算问题方法的语言
享受利用编程将创新变为实现乐趣的语言
工具决定思维:关注工具变革的力量
2.1.4 “超级语言”的诞生
1、编程语言的种类
①机器语言:
-一种二进制语言,直接使用二进制代码表达指令
-计算机硬件(CPU)可以直接执行,与具体CPU型号有关
-完成2+3功能额机器语言 11010010 00111011
②汇编语言:
-一种将二进制代码直接对应助记符的编程语言
-汇编语言与CPU型号有关,程序不通过,需要汇编器转换
-完成2+3功能的汇编语言 add 2,3,result
③高级语言:
-更接近自然语言,同时更容易描述计算问题
-高级语言代码与具体CPU型号无关,编译后运行
-完成2+3功能的高级语言 result=2+3
④超级语言:
-粘性整合已有程序,具备庞大计算生态,可以很容易利用已有代码功能
-编程思维不再是刀耕火种,而是集成开发
-完成2+3功能的高级语言 result=sum(2+3)
python是唯一的超级语言,前进的步伐不可阻挡
2.2 实例2:Python蟒蛇绘制
1、python蟒蛇绘制
①设计蟒蛇的基本形状
问题1:计算机绘图是什么原理?一段程序为何能够产生窗体?为何能在窗体上绘制图形?
问题2:python蟒蛇绘制从哪里入手?如何绘制一条线?一个弧形?一个蟒蛇?
2、举一反三
①程序参数的改变:
-颜色:
-长度:
-方向:
②计算问题的拓展:
-圆形、五角星、国旗、机器猫绘制
import 保留字,引入了一个绘图库,名字叫:turtle
2.3 模块1:turtle库的使用
2.3.1 turtle库基本介绍
1、turtle(海龟)库是turtle绘图体系的python实现
-turtle体系:1969年诞生,用于程序设计入门
-python语言标准库之一
-入门级的图形绘制函数库
2、标准库
python计算生态=标准库+第三方库
-标准库:随解释器直接安装到操作系统中的功能模块
-第三方库:需要经过安装才能使用的功能模块
-库Library、包Package、模块Module,统称模块
3、turtle的原理
-turtle是一种真实的存在
-有一只海龟,其实再窗体正中心,在画布上游走
-走过的轨迹形成了绘制的图形
-海龟由程序控制,可以变换颜色、改变宽度等
2.3.2 turtle绘图窗体布局
turtle的画布空间,最小单位是像素
turtle.setup(width,height,startx,starty)
-setup()设置窗体大小及位置
-4个参数中后两个可选
-setup()并不是必须的
-例题:turtle.setup(800,400,0,0)
窗体宽度800,高度400,窗体左上角在电脑屏幕左上角
turtle.setup(800,400) 窗口在屏幕的正中心
2.2.3 turtle空间坐标体系
1、绝对坐标
坐标原点(0,0)在窗体正中央,右方向是x轴,上方向是y轴。数学意义上的空间坐标
2、goto():让无论在任何位置的海龟到达改坐标位置
turtle.goto(x,y)
3、海龟坐标
-海龟前进方向,无论朝向哪个方向,都叫前进方向
-反方向是后退方向
-运行的左侧叫做左侧方向,右侧叫做右侧方向
4、控制海龟的函数
turtle.circle(r,angle) 以海龟左侧的某一个点为圆心,进行曲线运行
turtle.fd(d) 指的是向海龟的正前方向运行
turtle.bk(d) 向海龟反方向运行
2.3.4 turtle角度坐标体系
1、绝对角度:x轴正方向:0/360度 反方向:180/-180度 y轴正方向:90/-270度 反方向:270/-90度
2、seth()
turtle.seth(angle)
-seth()改变海龟行进方向
-seth()只改变方向但不行进
-angle为绝对度数
例:turtle.seth(45) 海龟朝向45度
3、海龟角度:
turtle.left(angle)、turtle.right(angle)
分别让当前海龟向左或者向右去改变运行方向
2.3.5 RGB色彩体系
1、RGB色彩模式:
由三种颜色构成的万物色
-指红蓝绿三个通道的颜色组合
-覆盖视力所能感知的所有颜色
-RGB没色取值范围0-255整数或0-1小数
2、常用RGB色彩:颜色 RGB整数值 RGB小数值
白色:255,255,255 1,1,1
3、turtle的RGB色彩模式
默认采用小数值,可切换为整数值
4、turtle.colormode(mode)
-1.0:RGB小数值模式
-255:RGB整数值模式
2.4 turtle程序语法元素分析
2.4.1 库引用与import
1、import:扩充Python程序功能的方式
-使用import保留字完成,采用<a>.<b>()编码风格
import<库名>
<库名>.<函数名>(<函数参数>)
2、import更多用法
使用from和import保留字共同完成
from <库名> import <函数名>
from<库名>import *
<函数名>(<函数参数>)
import turtle
turtle.setup(650,350,200,200) #turtle.setup(width,height,startx,starty)
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()
from turtle import *
setup(650,350,200,200)
penup()
fd(-250)
pensize(25)
.......
done()
3、两种方法比较
import <库名>
<库名>.<函数名>(<函数参数>)
不会出现函数重名问题
from <库名> import <函数名>
from <库名> import *
<函数名>(<函数参数>)
会有函数重名
4、使用import和as保留字共同完成
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
import turtle as t
t.setup(650,350,200,200)
t.penup()
t.fd(-250)
t.pendone()
.......
t.done()
2.4.2 turtle画笔控制函数
1、turtle画笔控制函数:
penup() pendown()
pensize() pencolor()
画笔操作后一直有效,一般成对出现
-turtle.penup() 别名 turtle.pu() 抬起画笔,海龟在飞行
-turtle.pendown() 别名 turtle.pd() 落下画笔,海龟在爬行
画笔设置后一直有效,直至下次重新设置
-turtle.pensize(width) 别名 turtle.width(width) 画笔宽度,海龟的腰围
-turtle.pencolor(color) color为颜色字符串或rgb值 画笔颜色,海龟在涂装
2、color参数的三种形式
①颜色字符串:("purple")
②RGB小数值:(0.63,0.13,0.94)
③RGB元组值:((0.63,0.13,0.94))
2.4.3 turtle运动控制函数——改变路径
1、控制海龟走直线&走曲线
-turtle.forward(d) 别名 turtle.fd(d) 向前行进,海龟走直线 d:行进距离,可以为负数
-turtle.circle(r,extent=None) 根据半径r绘制extent角度的弧形 r:半径 extent:绘制角度,默认360
2.4.4 turtle方向控制函数——只改变海龟行进方向
控制海龟面对方向:绝对角度&海龟角度
绝对:-turtle.setheading(angle) 别名 turtle.seth(angle) 改变行进方向,海龟走角度
-angle:改变行进方向,海龟走角度
海龟:-turtle.left(angle) 海龟向左转
-turtle.right(angle) 海龟向右转
-angle:在海龟当前行进方向上旋转的角度
2.4.5 基本循环语句
按照一定次数循环执行一组语句
for <变量> in range(<参数>)
<被循环执行的语句>
for i in range(5):
print(i)
0
1
2
3
4
for i in range(5):
print("Hello:",i)
Hello: 0 %Hello 冒号和数字之间有了空格,print中间加","的作用
Hello: 1
Hello: 2
Hello: 3
Hello: 4
range()函数 跟for、in搭配形成计数循环
产生循环计数序列
-range(N) :产生0到N-1的整数序列,共N个
-range(M,N):产生M到N-1的整数序列,共N-M个