2.1 深入理解Python语言
计算机技术的演进:
1946-1981 计算机系统结构时代(互联网&Windows操作系统诞生)-计算能力问题
1981-2008 网络和视窗时代(08年安卓诞生)-交互问题
2008-2016 复杂信息系统时代(17年alphago击败柯洁)-数据问题
2017+ 人工智能时代 -人类的问题
编程语言的多样初心:
C:重点指针、内存、数据类型,语言本质是理解计算机系统结构,用于解决性能问题,适合计算机类专业;
C++:重点对象、多态、继承,语言本质是理解主客体关系,用于解决大规模程序,适合计算机类专业;
Java:重点对象、跨平台、运行时间,语言本周是理解主客体关系,用于解决跨平台问题,适合软件类专业;
Visual Basic:重点对象、按钮、文本框,语言本质是理解交互逻辑,用于桌面应用开发,适用对象不确定;
Python:重点编程逻辑、第三方库,语言本质是理解问题求解,适合解决各类问题,适合所有专业;
不同编程语言所处的时期不同,初心和历史使命也不同;
Python特点:语言简洁 + 生态高产 ==> 效率10x
2.2 实例2:Python蟒蛇绘制
#PythonDraw.py
Import turtlre
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.circlr (40, 80/2)
Turtle.fd (40)
Turtle.circle (16, 100)
Turtle.fd (40 * 2/3)
Turtle.done ( )
2.3 turtle库的使用
海龟库是turtle绘图体系的python实现,是python的标准库之一;
python计算生态 = 标准库(随解释器直接安装到操作系统的功能模块) + 第三方库(需要经过按照才能使用的功能模块)
库Library、包Package、模块Module,统称模块;
Turtle.setup(width,height,startx,starty)设置绘图窗体大小及位置,并不是必须的,四个参数中后两个可选;
空间坐标体系:绝对坐标(海龟一开始的位置)、海龟坐标(对于海龟视角而言的);
Turtle.goto(x,y)让海龟移动到某绝对坐标;
Turtle.bk(d)后退;
Turtle.fd(d)前进;
Turtle.circle(r,angle)以某点为圆心画曲线;
角度坐标体系:绝对角度(x轴正方向为0/360°,y轴正方向为90/-270°),海龟角度(还是相对海龟而言);
Turtle.seth(angle)只改变海龟方向但不前进,其中angle为绝对度数;
# turtle.seth(45)让海龟转到45°角方向上;
Turtle.left(angle)/Turtle.right(angle)让海龟向左/右侧旋转相应角度;
RGB色彩体系:红蓝绿三个通道的颜色组合,每色取值范围0-255整数或0-1小数;
white:255,255,255;
black:0,0,0;
默认采用小数值,可切换为整数值——turtle.colormode(mode)当mode=1.0使用RGB小数值模式,mode=255时为整数模式;
2.4 turtle程序语法元素分析
库引用:扩充Python程序功能的方式,使用import保留字完成,采用<库名> . <函数名>(函数参数)编码风格;
import更多用法(1)
使用from和import保留字共同完成 即 from<库名> import <函数名> 或 from<库名>import*,这样在使用函数时就不用重复使用库名;
更改后:
#PythonDraw.py
from turtlre import*
setup (650, 350, 200, 200)
penup ( )
fd (-250)
pendown ( )
pensize (25)
pencolor ("Purple")
seth (-40)
For i in range ( 4):
circle (40, 80)
circle (-40, 80)
circlr (40, 80/2)
fd (40)
circle (16, 100)
fd (40 * 2/3)
done ( )
对于不省略库名的方法,所使用的函数是库中的函数,不会出现函数重名问题。而省略库名时,所使用的函数相当于是独立的,有可能会和用户自定义的某个函数重名,引起冲突;
import更多用法(2)
使用import和as保留字共同完成 即 import<库名> as <库别名>
<库别名> . <函数名>
可以给调用的外部库关联一个更短,更方便的名字;
更改后:
#PythonDraw.py
import turtlre 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.circlr (40, 80/2)
T.fd (40)
T.circle (16, 100)
T.fd (40 * 2/3)
T.done ( )
既避免了代码量冗余,又不会出现函数重名问题;
画笔控制函数:操作后一直有效,一般成对出现;
Turtle.penup()别名turtle.pu()即抬起画笔,turtle.pendown()别名turtle.pd()即落下画笔;
Turtle.pensize(width)别名turtle.width(width)即设置画笔宽度;
Turtle.pencolor(color)设置画笔颜色,其中color可以写作颜色字符串 # “purple”,或RGB小数值 # 0.63,0.13,0.94 或RGB元组值 #(0.63,0.13,0.94);
turtle运动控制函数:控制海龟行进方向(直线&曲线);
使用turtle.circle(r,angle)时默认圆心在海龟左手边(海龟视角) r 距离的位置上;
turtle方向控制函数:
turtle.setheading(angle)别名turtle.seth(angle),将海龟朝向改为某一绝对角度;
Turtle.left(angle)和turtle.right(angle)是在海龟方向上旋转角度;
循环语句for in 结构:
For <变量> in range (<参数>):
<循环执行的语句>
其中 变量 表示每次循环的计数(0~次数-1),参数 表示循环次数;
# for i in range(5):
print(i)
得到
0
1
2
3
4