深入理解Python语言
计算机技术的演进
- 1946-1981:计算机系统结构时代——计算能力问题
- 1981-2008:网路与视窗时代——交互问题
- 2008-2016:复杂信息系统时代——数据问题
- 新计算时代
- 2016-:人工智能时代——人类的问题
编程语言的多样初心
超过600种编程语言。
- C
- 学习内容:指针、内存、数据类型
- 语言本质:理解计算机系统结构
- 解决问题:性能
- 适用对象:计算机类专业
- Java
- 学习内容:对象、跨平台、运行时
- 语言本质:理解主客体关系
- 解决问题:跨平台
- 适用对象:软件类专业
- C++
- 学习内容:对象、多态、继承
- 语言本质:理解主客体关系
- 解决问题:大规模程序
- 适用对象:计算机类专业
- VB
- 学习内容:对象、按钮、文本框
- 语言本质:理解交互逻辑
- 解决问题:桌面应用
- 适用对象:不确定
- Python
- 学习内容:编程逻辑、第三方库
- 语言本质:理解问题求解
- 解决问题:各类问题
- 适用对象:各类专业
2018年后:
计算机性能不再是解决一般问题的瓶颈。
移动互联网广泛普及。
大数据、云计算、物联网、人工智能等需求日益增大。
深入理解Python语言
Pyhton语言是通用语言。
特点与优势:
语法简洁
- 强制可读性
- 较少的底层语法元素
- 多种编程方式
- 支持中文字符
提高将近10倍效率。
生态高产
- 13万第三方库
- 快速增长的计算生态
- 避免重复造轮子
- 开放共享
- 跨操作系统平台
人生苦短,我学Python
- C/C++:Python归Python,C归C
- Java:针对特定开发和岗位
- HTML/CSS/JS:不可替代的前端技术,全栈能力
- 其他语言:R/Go/Matlab等,特定领域
Python 语言:
- 掌握抽象并求解计算问题综合能力的语言
- 了解产业界解决复杂计算问题方法的语言
- 享受利用编程将创新变为乐趣实现的语言
“超级语言”的诞生
编程语言的种类
- 机器语言
- 二进制语言,直接使用二进制代码表达指令
- 计算机硬件(CPU)可以直接执行,与具体CPU型号有关
- 汇编语言
- 将二进制代码对应助记符
- 与CPU型号有关,程序不通用,需要汇编器转换
- 高级语言
- 更接近自然语言,更容易描述计算问题
- 与具体CPU型号无关,编译后运行
- 超级语言
- 具有庞大计算生态,可以很容易利用已有代码功能
- 编程思维不再是刀耕火种,而是集成开发
Python:唯一的超级语言
实例2: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:turtle库的使用
turtle库概述
turtle(海龟)库是turtle绘图体系的Python体现
- 标准库之一
- 入门级绘图函数库
标准库:随解释器直接安装到操作系统中的功能模块
第三方库:通过安装才能使用的功能模块
库Library,包Package,模块Module,统称模块
turtle库的原理
turtle(海龟)是一种真实的存在。
- 有一只海龟,在窗体正中间,在画布上游走
- 走过的轨迹变成了图形
- 可以改变大小和颜色
turtle绘图窗体布局
turtle的绘图窗体
turtle的一个画布空间,最小单位为像素。
屏幕坐标系
- 屏幕左上角坐标为(0,0)
- 使用
turtle.setup(width, height, startx, starty)
设置窗体大小及位置,后两个参数可选。后两个参数去掉,窗体在屏幕中居中。
turtle空间坐标体系
绝对坐标
- 以海龟起始为原点,往上为+y,往右为+x。
- 使用
turtle.goto(x,y)
使任意位置的海龟到达(x,y)
海归坐标
- 前进方向,左侧方向,右侧方向,后退方向。
- 前进:
turtle.fd(d)
后退:turtle.bk(d)
左转:turtle.circle(r,angle)
turtle角度坐标体系
绝对角度
- +x方向:0/360度;+y方向:90/-270度
- 使用
turtle.seth(angle)
改变当前海龟行进方向,只改变方向但不行进。angle
为绝对度数
海龟角度
-
turtle.left(angle)
和turtle.right(angle)
,改变海龟的方向
例:
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
RGB色彩体系
由三种颜色构成的万物色
- 指红绿蓝三个通道的颜色组合
- 覆盖实力所能感知的所有颜色
- RGB每色取值范围0-255整数或0-1小数
常用RGB颜色
英文名称 | RGB整数值 | RGB小数值 | 中文名称 |
---|---|---|---|
white | 255,255,255 | 1,1,1 | 白色 |
yellow | 255,255,0 | 1,1,0 | 黄色 |
magenta | 255,0,255 | 1,0,1 | 洋红 |
cyan | 0,255,255 | 0,1,1 | 青色 |
blue | 0,0,255 | 0,0,1 | 蓝色 |
black | 0,0,0 | 0,0,0 | 黑色 |
默认采用小数值标时颜色。可切换为整数值
使用turtle.colormode(mode)
可改变模式颜色模式。1.0为小数模式,255为整数模式。
库引用与import
turtle程序语法元素分析
扩充Pyhton程序功能的方式
- 使用
import
保留字完成,采用<a>.<b>()
的编码风格
import <库名>
<库名>.<函数名>(<函数参数>)
使用from
和import
保留字共同完成
from <库名> import <函数名>
或
from <库名> import *
<函数名>(<函数参数>)
不需要加<库名>.
了
<库名>.<函数名>(<函数参数>)
不会出现函数重名的问题。
使用import
和as
保留字共同完成
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
- 关联一个更短、更适合的名字,同时避免重名
turtle画笔控制函数
画笔操作后一直有效,一般成对出现
-
turtle.penup()
别名turtle.pu()
,抬起画笔,海龟在飞行 -
turtle.pendown()
别名turtle.pd()
,放下画笔,海龟在爬行
画笔设置有一直有效,直到下一次重新设置
-
turtle.pensize(width)
别名turtle.width(width)
,设置画笔宽度,海龟的腰围 -
turtle.pencolor(color)
设置画笔颜色,color
为颜色字符串或r,g,b值- 颜色字符串:
turtle.pencolor("purple")
- RGB的小数值:
turtle.pencolor(0.63,0.13,0.94)
- RGB的元组值:
turtle.pencolor((0.63,0.13,0.94))
- 颜色字符串:
turtle运动控制函数
控制海龟行进:走直线&走曲线
-
turtle.forward(d)
别名turtle.fd(d)
,向前行进,海龟走直线-
d
为距离,可以为负数
-
-
turtle.circle(r,extent=None)
根据半径r
绘制extent
角度的弧形,圆心在海龟左侧。默认角度为360度。半径为负数时,圆心在海龟右侧
turtle方向控制函数
控制海龟面对方向:绝对角度&海龟角度
-
turtle.setheading(angle)
别名turtle.seth(angle)
改变行进方向,海龟走角度。角度值为绝对角度 -
turtle.left(angle)
或turtle.right(angle)
让海龟向左或向右转。角度为海龟角度 - 仅改变方向,不会使海龟行进
循环语句与range()
函数
循环语句:按一定次数循环执行一组语句
for <变量> in range(<参数>)
<被循环执行的语句>
-
<变量>
表示每次循环的计数,0到次数-1 -
<参数>
为次数
range()
产生循环计数序列
-
range(N)
产生0到N-1的整数序列,共N个数字 -
range(M,N)
产生从M到N-1的整数序列,共N-M个数字
turtle.done()
绘图完成后窗口不会自动关闭