两周预科班所学内容总结
一、python入门
1、概况
语言:
计算机语言:人和计算机之间沟通的编程语言
计算机语言的分类:
(1)机器语言
(2)汇编语言
(3)高级语言
执行方式:
(1)编译执行
(2)解释执行,有自己的解释器
优点:移植性好 缺点:速度慢
1.python的发展史
龟叔 1989年
2.python版本
Python2x-------2.7(已停止更新)
Python3x-------
4.python的特点
(1)语法简洁
(2)面向过程和面向对象
(3)可扩展
(4)解释执行的语言可以跨平台
(5)强大的支持库
5.python的应用领域
Web开发
网络爬虫
数据分析和人工智能
游戏编程
6.开发环境
Python的安装:勾选addpath ,要自定义安装选择路径
Pycharm安装:自定义选择路径
7.第一个python程序执行
执行方式:
(1)交互式执行: python 等待输入命令,一行一行的执行python代码
(2)脚本执行: 1.将python的所有代码都写在py文件中。
2.在控制台中进输入python命令+文件名.扩展名
2、 变量(常量正课时讲)
1. 变量定义:使用指定的名称来绑定特定的值
2. 变量赋值: 变量名= 变量值 =是赋值,不是数学意义上的=
3. 内存结构(内存图一定要会画)
4.多个变量指向同一个内存地址
在python中,基础数据类型(数值、布尔、字符串、字节)属于基于内存的管理。
5. 定义变量和修改变量绑定
定义变量:初次赋值
修改变量的绑定:对已有变量进行重新赋值,先跟之前的值进行解绑,再绑定新的值。
>>>当变量名绑定变量时,计算机p解释器做了什么事情?
(1)在内存中创建一片内存存变量值
(2) 在内存中创建一片内存变量名
(3)将变量名绑定到变量值
6. 变量名
(1)字母、数字、下滑线,注意不要用数字开头
(2) 变量在使用之前必须赋值
(3)变量可以指向不同的对象,因为python是鸭子类型
7. 平行赋值
x=1
y=2
x,y=y,x
8. 输入输出
1. print(内容)
Print(多个内容使用,分隔)
End:指定print的结束符号,默认是\n
Print(“aa”,end=”修改后的结束符号”)
2.input(“提示信息”)
输入的值是字符串
Input是阻塞
3. 注释
单行注释 #:从#开始,直至当前行结束
注释的内容是不被解释器解析。
3、数据类型
1. 数值
(1)整数 int
整数的四个进制:二进制(0b)、八进制(0o)、十进制、十六进制(0x)
进制之间转换:
其他进制转换成十进制:乘幂法
十进制转成其他进制:下除法,取余从下到上
在python中使用函数进行转换
bin 二进制
int 十进制(整数)
oct 八进制
hex 十六进制
(2)浮点
小数,在python中只有十进制的浮点类型
科学计数e
浮点类型在计算机中计算存在不精确性
(3)复数
实部和虚部都是浮点类型
实部+虚部j
实部real、虚部imag
2. 布尔类型 bool
布尔类型是整型的子类型
True---1
False---0
3. 转换
int():将其他类型转成整型,默认是0,向0取整, 不能将复数类型转换成整型
float(): 将其他类型转成浮点类型,默认的0.0 , 不能将复数类型转成浮点类型
complex():将其他类型转换成复数类型, 默认是0j
bool():将其他类型转换成布尔类型, 只要不是0 0.0 0j 都转换成Ture
4. 运算级别
复数> 浮点 >整型
运算中,结果取级别高的类型。
4、运算符
运算符定义:具有特殊计算规则的符号
操作数
运算符+操作数=表达式
N元运算符:N个操作数
1. 算数运算符
+ - * /
** m**n
// 向下取整
% 取模:余数=被除数-除数*商 商:向下取整
2. 比较运算符
返回布尔类型
> < >= <=
== !=
==: 内容一致
(Python2不等于<>)
3. 身份运算符
Is 、is not
Is: 判断对象是否是同一个
Id():返回一个对象的地址id
作为基础数据(数值、布尔类型、字符串、字节),基于内存的管理,==跟is返回值一致
4. 逻辑运算符
返回值:布尔类型,计算值
And:同时为True,才为True,否则False
Or:同时为False,才为False,否则为True
Not
短路现象:
And:第一个表达式如果为假,则结果为假,第二个表达式不执行
Or: 第一个表达式如果为真,则结果为真,第二个表达式不执行
5. 位运算符
原码反码补码
正数:原码反码补码是一样
负数:原码,负数的二进制码(对应正数的二进制码,最高位取1)
反码:符号位不变其余取反
补码:反码+1
计算机中以补码形式存储数据,所有的计算都是按补码进行的计算
补码变回原码:反码+1
& 按位与: 同时为1,则为1,否则为0
| 按位或: 同时为0,则为0,否则为1
^ 按位异或:相同则为0,不同则为1
~ 按位取反:包括符号位都取反
6. 赋值运算符
= 赋值 变量赋值
+= -=……
7. 成员运算符
In: 判断元素是否存在对象中
Not in
优先级
算数运算符> 比较运算符>逻辑运算符> 赋值运算符
5、字符串
1.定义:由字符组成序列,单个字符也是字符串
2.创建:
双引号
单引号:使用同双引号
(交替使用双引号和单引号可以达到输出对方的目的)
如果定义的内容比较长,需要使用续行符\
注意:三引号:定义字符串时可以包含换行
三引号:不是注释
创建空字符串,空字符串不是None
3.转义
\: 单引号 双引号 \
\n: 换行
\r: 回车
前缀r:将字符按原样输出
4.字符串的操作
1. 运算符
+ * in not in is is not == < > !=
字符串的操作大部分都是新创建字符串
2. 索引
字符串[index]
Index: 第一个从0开始
正数:从左到右
负数:从右到左
如果索引越界会报异常
索引的范围:[-len(s), len(s)-1]
字符串的元素是不可变“abdjkldj”
3.切片:
字符串[start:end]
获取字符串多个元素,包含start,不包含end,截止到end-1
Start: 正数、负数、0
End: 正数,负数、0
默认方向从左到右,注意start<end
#字符串的切片除整切片以外都是新创建字符串对象
# 字符串的整切片不是新创建字符串对象,直接指向自己原来的对象
4.字符串的相关方法
(1)count统计(可越界不报错)
(2)Index find 查找(查找不到,前报错,后不报错)返回查找内容在原中的位置
(3)join 拼接字符串(新建字符串)
(4)replace 替换
(5)strip 剪切(从两端开始去除)
(6)split 切割(切割完字符串就没有了)不写参数,默认按照空格切,将所有的空格都切割掉
(7)upper lower 大小写
(8)isnumeric isalpha 判断是否是数值类型、字符类型
(9)center (width,char)占位字符
如果width<len(s),不会对原串进行截取
若原字符串长度奇数,当从右侧开始填充
若字符串长度为偶数,从左侧开始填充
6、字节
1. 定义:多个单字节构成的序列是字节
单字节:支持8个数据位
定义时跟字符串类似,加前缀b
B=b”dfldsj”
2. 操作和方法
同字符串
索引跟字符串不同,得到的是ascii码
7、格式化
1.%
%s====str()
从左到右的顺序,一个变量对应一个%s
格式: 字符串%s % (变量,)
例如:print(“%s的成绩是%s”%(name,score))
2.format
{}====str()
可以使用从左到右的顺序,一个变量对应一个{}
也可以使用索引指定(索引从0开始)
格式: 字符串{}.format(变量,)
例如:print(“{}的成绩是{}”.format(name,score))
3.f字符串常量
3.6版本之后才可以使用
格式f”{变量}字符串”
例如:print(f“{ name }的成绩是{ score }”)
8、流程控制
顺序
选择
循环
1.选择
if 布尔条件:
If成立的执行代码块,如果有多行需要保持相同缩进
else:
if条件不成立的时候执行的代码块
注意:
(1)if后面是条件判断,可以单独存在
(2)else后面没有条件,不能够单独存在
(3)编程过程中发生概率大的放在前面判断
(4)如果有多个if并行存在,代码会每个if执行一次
2.循环
for 每个元素的变量名 in 可迭代对象:
循环体
for I in 外循环对象:
for j in 内循环对象:
循环体
嵌套for循环:先理清楚内循环,再去理外循环。
Range(start,end,step):
Start默认值是
Step默认值1
包含start,不包含end
产生一个列表
9、列表
1.定义: 能够存储多个元素的数据类型
特点:有序、元素可以是多种数据类型,列表是可变数据类型,元素可以修改。
2.创建
列表名=[元素,]
空列表=[]
应用,布尔条件判断 空列表---False
3.相关操作
1.运算符
+ * in is not > < ==
注意:
+* 是元素的重复,新创建列表
In 元素是否在列表中。
Is ==
当定义相同列表时,其实创建的是不同的对象。特别是里面的元素是可变类型,也是新创建的对象
> 按照元素逐个比较
2.索引:
列表[index]
Index :正数、负数、0
使用索引可以修改列表中的元素。
注意:使用索引进行赋值,是对某一个元素进行的修改。
A=[1,2,3]
A[0]=[“a”,”b”]
结果[[“a”,””b],2,3]
3.切片
Start : end
注意:使用切片进行赋值,改变的是整个列表的元素,
建议使用切片进行赋值,仍然赋值给列表。
A=[1,2,3]
A[1:3]=[“a”,”b”]
结果:[1,”a”,”b”]
4.相关方法
(1)添加
append:向列表的尾部添加一个元素
insert:向指定的位置添加一个元素
(2)删除
①pop:删除指定位置的元素,如果index不写,默认删除最后一个元素。一次只删除一个元素
返回值是被删除的元素
②remove:删除指定内容的元素
(3)统计、反向、检索
count
reverse:原地反向
index:查找元素的位置
(4)排序:原地排序
如果列表中元素不可比较(类型不同),不能进行 排序
reverse=False默认升序
降序需要将reverse=Ture
sort(reverse= Ture)
sorted()新建内存去存储
(5)复制
赋值:指向的是原来的对象。
copy:浅拷贝:只拷贝当前的列表对象。
要求会画内存图
结论:对于不可变类型的元素,如果原来对象发生改变,复制的对象不发生改变。
对于可变类型的元素,如果原来对象的元素发生改变,复制的对象也跟着一起改变。
10、元组
1.定义:
为了防止列表对象被修改,所以使用元组保证数据的安全性。
元组:戴了枷锁了列表
元组中的元素,本身不能被改变。如果元组的元素是可变对象,当前元素的元素是可以 被改变的,
2.创建
A=(1,2,3)
B=1,2,3不建议这么创建
3.相关操作
操作符
同列表
(1)索引:
使用方式都跟列表一样,但是不能对索引进行复制。
(2)切片:
使用方式都跟列表一样,但是不能对切片进行复制。
字符串的整切片---指向原来的字符串
列表的整切片----
元组的整切片----
4.相关方法
count()
index()
11、字典
1. 原理:
字典是根据key应用hash函数生成唯一的数值,数值跟value内存相关联,可以直接通过访问key,访问到value,加快了数据的访问速度。
2. 创建
{键:值,}
字典特性:
(1)字典的元素无序
(2)key不可重复
(3)key必须是不可变类型
3. 相关操作
可以支持is in ==
字典的访问:字典[key] :key必须存在
字典元素追加:字典[key]=值: 如果key存在,则覆盖value,如果key不存在,则追加
4. 方法
fromkeys : 创建同值不同键的字典
pop:删除指定键的键值对,返回删除的键值对的值
get(key,default): 字典[key]如果key不存在会报错,但是get不会报错,会返回default。
keys() 获得所有的键
values() 获得所有的值
items() 获得所有的键值对,以元组的形式存在
k,v s.items()
12、集合
1. 原理:集合的底层是字典实现,字典中key的集合
2. 创建:{元素,}
集合特点:不可重复 元素类型不可变 无序
3. 相关操作
操作符跟字典一样
注意:不能使用任何索引的方式获得集合的单个元素
对于字典和集合来说都操作的是key
4. 方法
add 添加
remove 删除remove元素不存在会报错()
遍历
总结:
1数值类型:整数、浮点、复数
2布尔:是数值类型的子类型
转换
int()
float()
complex()
bool()
3字符串
4字节
5列表
6元组
序列:有序,可重复(字符串、字节、列表、元组)
序列特点:len
索引
切片
都是可迭代对象
有公共的操作符
序列的相关方法:list能够将序列转换成列表
tuple(序列)能够将序列转换成元组
str(数值) 只能将数值类型的数据变成字符串,
将列表拼成字符串用join方法,使用元素必须是字符串
bytes(数值):将序列变成字节
list()
tuple()
bytes()
str()
max()
min()
sum()
sorted() 新创建字符串
reversed() 新创建对象进行逆序
len()
7字典
8集合
无序,不可重复:
dict()将键值对转成字典
set(序列):将序列变成集合
去重:
13、函数
1. 函数的作用
函数是实现单一或者多个功能的代码段,函数是以“功能”来划分。
函数的用处:
(1)减少代码的重复
(2)易于扩展和维护
2. 函数的分类
内建函数
自定义函数
3. 自定义函数
1. 定义
def 函数名([参数……]):
函数体
[return 返回值]
函数名: 一般以函数的功能起名,不要跟内建函数或者其他模块重名。
(1)字母数字下划线,不能以数字开头
(2)不能是关键字
2. 参数
1. 位置参数
函数调用时的参数顺序、数量跟定义时一致。
注意:按照顺序调用,如果定义了位置参数就一定要传递(除有默认值以外)
2. 默认参数
在函数定义时,给参数赋予默认值。
当函数调用时,如果有参数值,那么使用传入的参数值给参数赋值
如果没有参数值,则使用默认参数给参数赋值。
注意:
(1)位置参数、命名关键字参数都可以是使用默认参数
(2)传递参数时:如果传入参数,则使用传入的值,如果没传递参数则使用默认值
(3)如果有位置参数,默认参数在位置参数之后
(4)默认值需要使用不可变类型,不能使用可变类型
3. 命名关键字参数
定义的时候,参数前面加* ,
调用的时候,必须使用:参数名=参数值
注意:
(1)如果定义了命名关键字参数,除非有默认值,否则一定要传入参数
(2)参数名=参数值
作用:
(1)增加程序的可读性
(2)可以忽略参数的顺序
(3)可以有默认值。
4. 可变参数
参数的数量不定
将位置参数都打包成元组传递给函数。
打包: 定义函数时,使用* 参数,会将所有的位置参数打包成元组
拆包:调用函数时,使用* 参数 ,对参数进行拆包。
5. 关键字参数
收集素有的命名关键字参数
参数是以字典形式传递给函数。
打包:定义函数时,使用 ** 参数 ,会将参数打包成字典
拆包:调用函数时,使用**参数,进行拆包
顺序: 位置> 默认参数 > 可变参数/命名关键字参数> 关键字参数
可变参数和命名关键字参数不能同时使用。
3. 返回值
格式:使用return
返回空值None:
(1)return None
(2)没有return
(3)只写return
返回值可以返回表达式,也可以返回变量,无论返回什么,返回都是对象。
多个返回值:
使用元组可以返回多个返回值,也可以直接使用多个变量接受多个返回值,必须一一对应。
注意:当程序执行了return之后,会跳出函数,return之后的语句不再执行。
4. 函数的说明文档
函数定义下一行,可以使用”””完成对函数功能的注释。
调用
函数名._ _doc_ _
help(函数名)
5. 函数的注释(有些有,有些没有)
直接在函数定义时加->类型,可以指定返回值的类型
函数名._ _annotation_ _
14、类和对象
一、基本概念
1.对象:
万物皆对象。
对象是具有属性和行为。
属性:名词
行为:动词
# 对象是具体的实现,对象本身是具体的内容。
2. 类
类是抽象的
将对象按照需求分类——类
3. 类和对象之间的关系
类是对象的抽象,对象是类的具体实现。
类:蓝图,模板。
对象:类产生的具体实例。
二、创建类
1. 定义
Class 类名:
类体
创建对象:
类名(参数):参数取决于init方法
2.在类中定义实例属性
def _ _init_ _(self):
属性初始化
self.属性名=值
建议将所有的属性都写在init中进行初始化。
3.在类中定义实例方法
class 类:
def 方法名(self,其他参数): # self是第一个参数
pass
实例方法和实例属性调用:必须先有实例(对象),通过 对象.属性名/方法名
调用的时候,不需要传入self