1.python基本语法元素
1.1正式学习前的基础知识
1.1.1计算机的概念
计算机是根据指令操作数据的设备
1)功能性 对数据的操作,表现为数据计算、输入输出处理和结果存储等
2)可编程性 根据一系列指令自动地、可预测地、准确地完成操作者的意图
1.1.2计算机的发展
计算机的发展参照摩尔定律,表现为指数方式
摩尔定律:单位面积集成电路上可容纳晶体管的数量约每两年翻一番
- 计算机硬件所依赖的集成电路规模参照摩尔定律发展
- 计算机运行速度因此也接近几何级数快速增长
- 计算机高效支撑的各类运算功能不断丰富发展
1.1.3程序设计
程序设计是计算机可编程性的体现
- 程序设计,亦称编程,深度应用计算机的主要手段
- 程序设计已经成为当今社会需求量最大的职业技能之一
- 很多岗位都将被计算机程序接管,程序设计将是生存技能
1.1.4程序设计语言
程序设计语言是一种用于交互(交流)的人造语言
- 程序设计语言,亦称编程语言,程序设计的具体实现方式
- 编程语言相比自然语言更简单、更严谨、更精确
- 编程语言主要用于人类和计算机之间的交互
1.1.5编译和解释
编程语言的执行方式
计算机执行源程序的两种方式:编译和解释
- 源代码:采用某种编程语言编写的计算机程序,人类可读
例如:result = 2 + 3
- 目标代码:计算机可直接执行,人类不可读 (专家除外)
例如:11010010 00111011
编译:将源代码一次性转换成目标代码的过程,执行编译过程的程序叫作编译器
解释:将源代码逐条转换成目标代码同时逐条运行的过程,执行解释过程的程序叫作解释器
总结:
- 编译:一次性翻译,之后不再需要源代码(类似英文翻译)
- 解释:每次程序运行时随翻译随执行(类似实时的同声传译)
1.1.6静态语言和脚本语言
根据执行方式不同,编程语言分为两类
- 静态语言:使用编译执行的编程语言 C/C++语言、Java语言
- 脚本语言:使用解释执行的编程语言 Python语言、JavaScript语言、PHP语言
两种语言优点:
- 静态语言:编译器一次性生成目标代码,优化更充分 程序运行速度更快
- 脚本语言:执行程序时需要源代码,维护更灵活 源代码在维护灵活、跨多个操作系统平台
1.2python快速入门
1.2.1温度转换案例
问题:将两种温度体系进行转换
- 摄氏度:中国等世界大多数国家使用 以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画
- 华氏度:美国、英国等国家使用 以1标准大气压下水的结冰点为32度,沸点为212度,将温度进行等分刻画
# 温度转化实例 TempStr = input("请输入带符号的温度值:") if TempStr[-1] in ['f', 'F']: C = (eval(TempStr[0:-1]) - 32)/1.8 print("输出的温度为{:.2f}C".format(C)) elif TempStr[-1] in ['c', 'C']: F = 1.8*eval(TempStr[0:-1]) + 32 print("输出的温度为{:.2f}F".format(F)) else: print("输入错误!")
1.2.2程序的格式框架
代码高亮:编程的色彩辅助体系,不是语法要求
缩进:一行代码开始前的空白区域,表达程序的格式框架
- 单层缩进:
- 多层缩进
- 严格明确:缩进是语法的一部分,缩进不正确程序运行错误
- 所属关系:表达代码间包含和层次关系的唯一手段
- 长度一致:(同一层次)程序内一致即可,一般用4个空格或1个TAB
注释:用于提高代码可读性的辅助性文字,不被程序执行的辅助性说明信息
- 单行注释:以#开头,其后内容为注释
例如:# 这里是单行注释
- 多行注释:以'''开头和结尾
例如:''' 这是多行注释第一行
这是多行注释第二行 '''
1.2.3命名与保留字
变量:程序中用于保存和表示数据的占位符号
- 变量采用标识符(名字) 来表示,关联标识符的过程叫命名
例如:TempStr是变量名字
- 可以使用等号(=)向变量赋值或修改值,=被称为赋值符号
例如:TempStr = "82F" #向变量TempStr赋值"82F"
命名:关联标识符的过程
- 命名规则: 大小写字母、数字、下划线和中文等字符及组合
如: TempStr, Python_Great, 这是门Python好课
- 注意事项: 大小写敏感、首字符不能是数字、不与保留字相同
如:Python和python是不同变量,123Python是不合法的
保留字:被编程语言内部定义并保留使用的标识符
- Python语言有35个保留字(也叫关键字 如:if, elif, else, in
- 保留字是编程语言的基本单词,大小写敏感 if 是保留字,If 是变量
- 保留字:
1.2.4数据类型
供计算机程序理解的数据形式
- 程序设计语言不允许存在语法歧义,需要定义数据的形式 需要给10,011,101关联一种计算机可以理解的形式
- 程序设计语言通过一定方式向计算机表达数据的形式 "123"表示文本字符串123,123则表示数字123
1)字符串
由0个或多个字符组成的有序字符序列
- 字符串由一对单引号或一对双引号表示
如:"请输入带有符号的温度值: "或者 'C'
- 字符串是字符的有序序列,可以对其中的字符进行索引
如:"请" 是 "请输入带有符号的温度值: " 的第0个字符
字符串的序号:正向递增序号 和 反向递减序号
字符串的使用:使用[ ]获取字符串中一个或多个字符
- 索引:返回字符串中单个字符 <字符串>[M]
如:"请输入带有符号的温度值: "[0] 或者 TempStr[-1]
- 切片:返回字符串中一段字符子串 <字符串>[M: N] (取序号为M到N-1的字符)
如:"请输入带有符号的温度值: "[1:3] 或者 TempStr[0:-1]
2)数字类型
- 整数:数学中的整数 32 或者 -89
- 浮点数:数学中的实数,带有小数部分 1.8 或者 -1.8 或者 -1.0
3)列表类型
由0个或多个数据组成的有序序列
- 列表使用[ ]表示,采用逗号(,)分隔各元素
['F','f']表示两个元素'F'和'f'
- 使用保留字 in 判断一个元素是否在列表中
TempStr[-1] in ['C','c']判断前者是否与列表中某个元素相同
1.2.5语句和函数
1)赋值语句
由赋值符号构成的一行代码
- 赋值语句用来给变量赋予新的数据值
C=(eval(TempStr[0:-1])-32)/1.8 #右侧运算结果赋给变量C
- 赋值语句右侧的数据类型同时作用于变量
TempStr=input("") #input()返回一个字符串,TempStr也是字符串
2)分支语句
由判断条件决定程序运行方向的语句
- 使用保留字if elif else构成条件判断的分支结构
if TempStr[-1] in ['F','f']:#如果条件为True则执行冒号后语句
- 每个保留字所在行最后存在一个冒号(:),语法的一部分
冒号及后续缩进用来表示后续语句与条件的所属关系
3)函数
根据输入参数产生不同输出的功能过程
- 类似数学中的函数, y = f(x)
print("输入格式错误") #打印输出 "输入格式错误"
- 函数采用 <函数名>(<参数>) 方式使用
eval(TempStr[0:-1]) # TempStr[0:-1]是参数
3.1)输入函数input()
从控制台获得用户输入的函数
- input()函数的使用格式: <变量> = input(<提示信息字符串>)
- 用户输入的信息以字符串类型保存在<变量>中
TempStr = input("请输入") # TempStr保存用户输入的信息
3.2)输出函数print()
以字符形式向控制台输出结果的函数
- print()函数的基本使用格式:
print(<拟输出字符串或字符串变量>)
- 字符串类型的一对引号仅在程序内部使用,输出无引号
print("输入格式错误") # 向控制台输出 输入格式错误
- print()函数的格式化:
{ :.2f }表示将变量C填充到这个位置时取小数点后2位
3.3)评估函数eval()
去掉参数最外侧引号并执行余下语句的函数
- eval()函数的基本使用格式: eval(<字符串或字符串变量>)
案例:
2.Python基本图形绘制
2.1深入理解Python语言
2.1.1计算机技术的演进
计算机技术的演进过程:
2.1.2编程语言的多样初心
各编程语言所处历史时期和使命不同,Python是计算时代演进的选择!
2.1.3python的特点
Python语言是通用语言、脚本语言、开源语言 、跨平台语言、多模型语言
语法简洁仅C语言10%的代码就可实现功能、 有15万第三方库,生态高产
2.1.4编程语言的种类
1)机器语言
- 一种二进制语言,直接使用二进制代码表达指令
- 计算机硬件(CPU)可以直接执行,与具体CPU型号有关
- 完成 2+3 功能的机器语言 11010010 00111011
2)汇编语言
- 一种将二进制代码直接对应助记符的编程语言
- 汇编语言与CPU型号有关,程序不通用,需要汇编器转换
- 完成 2+3 功能的汇编语言 add 2,3,result
3)高级语言
- 更接近自然语言,同时更容易描述计算问题
- 高级语言代码与具体CPU型号无关,编译后运行
- 完成 2+3 功能的高级语言 result = 2 + 3
4)超级语言
- 具有庞大计算生态,可以很容易利用已有代码功能
- 编程思维不再是刀耕火种,而是集成开发
- 完成 2+3 功能的超级语言 result = sum(2,3)
Python: 唯一的"超级语言"!
总结:
超级语言:粘性整合已有程序,具备庞大计算生态
高级语言:接近自然语言,编译器,与CPU型号无关
汇编语言:有助记符,汇编器,与CPU型号有关
机器语言:代码直接执行,与CPU型号有关
2.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()
运行结果:
2.3turtle库基本介绍
2.3.1turtle库概述
turtle(海龟)库是turtle绘图体系的Python实现
- turtle绘图体系:1969年诞生,主要用于程序设计入门
- Python语言的标准库之一 -
- 入门级的图形绘制函数库
2.3.2标准库
Python计算生态 = 标准库 + 第三方库
- 标准库:随解释器直接安装到操作系统中的功能模块
- 第三方库:需要经过安装才能使用的功能模块 -
- 库Library、包Package、模块Module,统称模块
2.3.3turtle绘图窗体布局
turtle绘图窗体布局是turtle的一个画布空间,最小单位是像素
函数:turtle.setup(width, height, startx, starty)
setup()设置窗体大小及位置 , 4个参数中后两个可选 (后两个省略时窗体位于正中心),setup()不是必须的(有默认的窗体)
2.3.4turtle空间坐标体系
1)绝对坐标
相关函数:turtle.goto(x, y),以画布中心作为原点(0,0)
案例:
import turtle turtle.goto( 100, 100) turtle.goto( 100,-100) turtle.goto(-100,-100) turtle.goto(-100, 100) turtle.goto(0,0)
输出结果:
2)海归坐标
参照物是海归的头的方向
例子:
2.3.5turtle角度坐标体系
1)绝对角度
更海龟无关,客观存在
相关函数: turtle.seth(angle)
seth()改变海龟行进方向 、angle为绝对度数 ,seth()只改变方向但不行进
2)海龟角度
海龟的左右
案例:
import turtle turtle.left(45) turtle.fd(150) turtle.right(135) turtle.fd(300) turtle.left(135) turtle.fd(150)
输出结果:
2.3.6RGB色彩体系
1)RGB色彩模式
由三种颜色构成的万物色
- RGB指红蓝绿三个通道的颜色组合
- 覆盖视力所能感知的所有颜色
- RGB每色取值范围0-255整数或0-1小数
2)常用RGB色彩
3)turtle的RGB色彩模式
默认采用小数值 可切换为整数值
函数:turtle.colormode(mode)
1.0:RGB小数值模式 , 255:RGB整数值模式
2.4turtle程序语法元素分析
2.4.1库引用与import
1)库引用
扩充Python程序功能的方式 -
- 使用import保留字完成,采用<a>.<b>()编码风格
import <库名>
<库名>.<函数名>(<函数参数>)
2)import更多用法1
使用from和import保留字共同完成
- from <库名> import <函数名>
from <库名> import *
<函数名>(<函数参数>)
例如:
from turtle 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) circle(40, 80/2) fd(40) circle(16, 180) fd(40 * 2/3) done()
3)两种方法比较
如果程序中自定义的函数名和库中的函数名相同则第一种方法不会出现函数重名问题,第二种方法则会出现
4)import更多用法2
使用import和as保留字共同完成
用法:
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
给调用的外部库关联一个更短、更适合自己的名字
2.4.2turtle画笔控制函数
下面两个函数画笔操作后一直有效,一般成对出
1)turtle.penup()
别名 turtle.pu() ,抬起画笔,海龟将飞行
2)turtle.pendown()
别名 turtle.pd() 落下画笔,海龟将爬行
下面函数画笔设置后一直有效,直至下次重新设置
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))
2.4.3turtle运动控制函数
控制海龟行进:走直线 & 走曲线
1)turtle.forward(d)
别名 turtle.fd(d) 向前行进,海龟走直线
- d: 行进距离,可以为负数(负数向后)
2) turtle.circle(r, extent=None)
根据半径r绘制extent角度的弧形
- r: 默认圆心在海龟左侧r距离的位置
- extent: 绘制角度,默认是360度整圆
案例1:
案例2:
2.4.4turtle方向控制函数
控制海龟面对方向: 绝对角度 & 海龟角度
1)turtle.setheading(angle)
别名 turtle.seth(angle),改变行进方向,海龟行走的角度 angle: 行进方向的绝对角度
2)
turtle.left(angle) 海龟向左转
turtle.right(angle) 海龟向右转
angle: 在海龟当前行进方向上旋转的角度,海龟角度
2.4.5 基本循环语句
1)循环语句 : 按照一定次数循环执行一组语句
格式:
for <变量> in range(<次数>):
<被循环执行的语句>
<变量>表示每次循环的计数,0到<次数>-1
案例:
2)range()函数
产生循环计数序列
- range(N) 产生 0 到 N-1的整数序列,共N个
- range(M,N) 产生 M 到 N-1的整数序列,共N-M个
3.基本数据类型
3.1数字类型及操作
3.1.1整数类型
1)与数学中整数的概念一致
- 可正可负,没有取值范围限制
- pow(x,y)函数:计算 xy,想算多大算多大
2)4种进制表示形式
- 十进制:1010, 99, -217
- 二进制,以0b或0B开头:0b010, -0B101
- 八进制,以0o或0O开头:0o123, -0O456
- 十六进制,以0x或0X开头:0x9a, -0X89
3.1.2浮点数类型
1)与数学中实数的概念一致
- 带有小数点及小数的数字
- 浮点数取值范围和小数精度都存在限制,但常规计算可忽略
- 取值范围数量级约-10^307至10^308,精度数量级10^-16
2)浮点数间运算存在不确定尾数,不是bug
原因:
3)因为存在不确定尾数,所以:
>>> 0.1 + 0.2 == 0.3 False
判断是否相等方法:
>>> round(0.1+0.2, 1) == 0.3 True
4)round()函数
round(x, d):对x四舍五入,d是小数截取位数
- 浮点数间运算与比较用round()函数辅助
- 不确定尾数一般发生在10^-16左右,round()十分有效
5)浮点数可以采用科学计数法表示
使用字母e或E作为幂的符号,以10为基数,格式如下:
3.1.3 复数类型
与数学中复数的概念一致