一、?索引与切片
#索引?在公司中一般也叫做下标或者角标,可以通过索引位读取序列中的指定元素,索引可分为正向索引和负向索引,索引中正向索引从0开始,负向索引从-1开始
#range?遍历函数(起始位,结束位,隔位)
遍历函数中:包含起始不包含结束,隔位不能为0可以为
Eg:?用range求出100以内的奇数和偶数
print(list(range(0,101,2)))?#使用range遍历方法求出100以内偶数
print(list(range(1,101,2)))#使用range遍历方法求出100以内奇数
#二、切片
切片的表达式:str[start_index:end_index:step]?[开始索引:结束索引:步长值]
2、解释:
start_index:开始索引(可以取值)
end_index:结束索引(不能取值)
step:步长
注意点:
3、注意点
1)、切片中如果步长不写则默认为1
2)、切片取值从开始索引到结束索引,且结果不包括结束索引位的值?(取到索引位的前一位)
3)、步长从开始索引走起,步长分正负
st=?‘abcdefgihjk’?#step步长值?能取开始索引?不能取结束索引?默认步长为1
print(st[::-1])?#?lkjhgfedcba?面试题目:重点把字符串中的值进行反向输出
常见的字符串函数str
字符串的定义:要用单引号或者双引号英文?括起来表示
1、?str.capitalize():(实现首字母大写输出)意思:首写大字母
2、?str.count(‘XX’):统计指定的字符在当前字符串中出现的次数
3、?””.join(‘XX’):(拼接函数)自动定义分割,来分割当前的字符串(自定义符号)
4、?split分割函数
5、?strip#删除字符串开头和结尾的字符
6、str.lstrip(‘XX’):删除字符串以XX字符开头的内容
7、str.rstrip(‘XX’):删除字符串以XX字符结尾的内容
8、?str.startswith(‘XX’):判断字符串中以XX字符串开头,如果条件成立返回TRUE,否则返回FALSE
9、str.endswith(‘XX’)判断字符串中以XX字符串结尾,如果条件成立返回TRUE,否则返回FALSE
10、find、rfind通过具体的值来找到对应值的索引位,
12、str.replace(‘XX’,‘YY’)替换指定的字符串,且可以指定替换次数
13、replace():replace(substring,newstring,max)
14、str.lower()将字符串中的所有大写字母改为小写
15、str.upper()将字符串中的所有小写字母改为大写
16、isalnum()判断字符串是否是字母或数字,数字和字母的组合
17、isdigit?判断字符串是否是数字
18、slower判断字符串是否是小写
19、isupper判断字符串是否大写
20、#istitle():判断字符串中首字母是否为大写,其他是否为小写,其他不为小写则为否
三、python中的列表:list?[?]
定义列表方法
方法一、直接通过[?]来定义?([]?中括号)
list1?=[1,2,3,‘teat’]
print(type(list1))?#
方法二、a?=‘hello’?#定义一个字符串
b=list(a)?#通过list列表类型来将a字符串转换成为列表
通过索引赋值:格式?列表名[?索引]=“?新值”
通过切片赋值:格式?列表名[?索引:]=“?新值”
append?添加元素
exend?添加函数,(两个列表的拼接)
insert?插入
remove?删除
del?删除
sort?升序
sorted?降序
reverse?反转
pop?删除(默认删除最后一个元素)
index?索引位
四、Python中的元组tuple?()
元组是不可变
1、如果要让做一个值的的元组输出的类型是元组:在数组的后面加上,(英文逗号)s=(1,)
元组转列表
方法一:将元组转换成列表?,通过list?方法;
(1)第一步转换:s=(1,2,3,4,5)?#元组
(2)第二步:转换成列表再进行修改,增加,删除
五、python中的字典:dict类型{}?英文的大括号?也叫花括号
一、列表转换成字典步骤?重点:(使用dict?就可以转换)
第一步:定义一个列表
l?=[(‘name’,‘zhangsan’),(‘age’,18)]
第二步:使用dict?将列表转换成字典
di_ct=dict(l)#将列表转换成为字典
第三步:查看字典的类型
print(type(di_ct))?#
第四步:在打印字典
print(di_ct)?#{‘name’:?‘zhangsan’,?‘age’:?18}
1、字典中添加键值对:?格式:变量名[键]?=值
注意:字典中添加新的的键和值,默认体在最后
2、字典中有键,替换值(键不变,值变)
3、通过keys取出对应的键
4、通过values?取出字典中对应的值
5、通过键来获取对应键的值
6、添加设置默认键值setdefault
7、删除键(删除键,值也没有了)del
8、使用for?循环获取key
9、使用for循环获取key,values
10、通过items()方法来获取对应键值对
11、通过pop函数删除指定的键,打印返回对应键的值
12、popitem在字典删除键值对,一般默认在末尾
13、clear?来清空当前字典中的键值对,返回一个空字典
14、get?,get通过键获取对应的值
15、快速生成一个新字典的方法fromkeys
#print?({?}.fromkeys([‘name’,‘age’]))
16、update?方法?将多个字典合并
17、copy?复制字典
18、del删除字典
六、集合:是不同元素的无序集合
1、可变集合(set):集合里面的元素是可以发生变化,集合中可以动态的增加和删除。
2、不可变集合(frozenset):集合里面的元素是不可以发生变化
注意:集合中的元素是无序的,且集合后元素不重复
去重:
一、(1)对列表数据重复的,进行去重
(2)对一个“字符串”进行去重
案例1:对列表数据重复的,进行去重
new?=?[1,2,33,2,2,99,‘test’]?#列表中元素去重
print(type(new))
print(new)
yy=set(new)
print(type(yy))
print(yy)
二、update?添加集合的内容
第一种方法;
test=“hello”
yy=set(test)
print(yy)
yy.update(“8”)
print(yy)
第二种方法:
test?=?‘hello’
yy?=?set(test)
yy.add(‘123’)
print?(yy)
三、clear?清除集合种的内容
test?=?‘hello’
yy?=?set(test)
yy.clear()?#清除集合中的内容
print?(yy)
pop?删除集合中的内容
讲解:pop()方法用于随机移除一个元素例如:set.pop()
备注:不带参数时一般是移除最后一位,但是我们这里删除的是第一位
test=“hello”
yy=set(test)
yy.pop()
print(yy)
remove?删除指定的内容
a=(‘99’,‘88‘)
yy=set(a)
yy=remove(‘88’)
print?(yy)
复制集合
test?=?‘hello’
yy?=?set(test)
a=yy.copy()
print?(a)
不可变集合?frozenset
只能使用copy:
第一种情况:copy(只能对不可变集合复制,)
test?=?‘hello’
yy?=?frozenset(test)
a?=?yy.copy()
print?(a)
三、?python之判断循环语句
python?循环语句
一、if?判断
二、for?循环
第一种情况:if?单分支?(if?条件判断语句分支)
格式:if?判断条件
执行?语句块1
else:
执行?语句块2
pass的讲解
pss的用法:pass?表示占位,在语句中还没有想好写什么满足条件
注意:python中的pass的作用:
(1)pass?是一个空语句
(2)保证格式完整
(3)保证语义完整
第二种情况:if?多分支?格式:
if?判断语句1:
执行语句块1;
elif?判断语句2:
第三种情况:if?语句的嵌套语句(if中嵌套一个if)
嵌套语句格式:
if判断条件1
if?判断条件2:
#?执行语句块2
#?else:
#?执行语句块3
#?else:执行语句1
执行语句块2;
elif?判断语句3:
执行语句块3;
elif?判断语句4:
执行语句块4;
三、三目运算
格式:?print?(?'执行语句1'?if?条件判断?else?'执行语句2')
二、while循环语句
实例一:?i=1?sum=0?while?i<=10?sum?+=i?i+=1?print?(sum)
三、for循环语句
1、for循环的语法格式如下:?for?...?in?...?语句块
四、continue语句
用法:continue语句用来告诉Python跳过当前循环的剩余语句,然后继续进?行下一轮循环。
list?=?[1,2,3,4,5,6,7,8,9]
for?i?in?list:
if?i==6:?continue
print?(i)
五、break语句
用法:语句会立即退出循环,在其后边的循环代码不会被执行。
list?=?[1,2,3,4,5,6,7,8,9]
for?i?in?list:
if?i==6:
break
print?(i)
四、Python中的函数
1、函数:一个工具,随调随用
优点:
(1)降低代码冗余
(2)增加代码的复用性,提高开发效率
(3)提高程序扩展性
(3)函数有两个阶段:定义阶段,调用阶段。
(4)定义时:只检查函数体内代码语法,不执行函数体内代码。
(5)比如:我们存储的过程,就是把所有的语句块,调用
(6)封装:就是把代码片段放在函数当中
2、自定义函数
def?自定义函数名():
函数体
函数?的调用格式?函数名()
举例:def?fun():
print(‘请输入密码:’)
调用:fun()
调试时调用多个函数:if?__name__=='__main__':
从其他模块调用:import?aa?(导入aa模块)
aa.fun(?)(调用aa模块的fun函数)
3、可变长元组(*list)与可变长字典(**dict)
4、全局变量与局部变量
5、return(函数的返回值)
6、内置函数(format、zip、open、with?open、abs、sum、map)
1.1?format(格式化输出函数)
a?='{}'.format('hello','ni','hao')
print(a)?#打印结果?hello
1.2?zip(打包函数)
打包:zip(a,b)?print(list(zip(a,b)))
解压:s,c=zip(*zip(a,b))?print(list(s))
1.2?open(打开与编辑文件)
open完整的语法格式为:
open(file,?mode='r',?buffering=-1,?encoding=None,?errors=None,?newline=None,?closefd=True,?opener=None)
file:?必需,文件路径(相对或者绝对路径)。
1.3?with?open(open的扩展)
url?=r'C:\Users\Administrator\PycharmProjects\untitled1\requester\ss.py'
with?open(url,'r',encoding='utf-8')as?o:
a=o.read()
print(a)
五、Python中的模块
1.模块的导入(import)
Time模块(时间的显示)
time.time()(显示从1970年到现在一共经历的秒数)time.ctime()(显示当前实时时间)
time.sleep()(休眠,括号内加上数字表示休眠多少秒后再执行)
time.strftime()(自定义时间格式:%Y-%m-%d-%H:%M:%S)
time.asctime()(转换为asc码形式显示时间)
3、random模块
random.random()?随机生成0开头的浮点数
random.randint(1,4)?随机取一个在1-4范围内的数(不包含4)
random.sample(a,4)?在a中随机抽取4个数生成一个列表
random.randrange()?递增随机取一个值
random.choice(a)?在a列表中随机取一个值
random.shuffle()?随机洗牌(将列表中的所有元素随机调?动输出)
2.string模块(字符串)
string.digits?生成0-9的整数
string.hexdigits?生成0-9的整数+大小写的a-f和A-F
string.ascii_uppercase?生成26个大写字母
string.ascii_lowercase?生成26个小写字母
4、加密与解密
5、OS?模块(对于目录文件路径常用的模块)
OS.getcwd()?获取当前文件对应的目录(相对路径)
os.path.isfile(a_path)?判断当前是否为文件,返回布尔值
OS.path.isdir()?判断是否为目录
os.path.exists(a_path)?判断文件(目录)是否存在
os.mkdir()?创建目录mkdir(a,755)注意:目要设置权限,755或者777
os.remove(a_path)?删除文件(无法删除目录)
os.listdir(a_path)?获取当前目录下所有的文件和目录
os.path.split(a_path)?对某个路径进行分割,要求:把路径?分隔以后,再通过索引取出分隔后的值,在使用得到的值进行拼接,拼接成新的路径
例如:
#第一步先使用split分割?a_path?="D:\\bao"?print(os.path.split(a_path))?#?第二步在根据索引取值?path=os.path.split(a_path)[0]?#第三步在拼接?b_path=os.path.join(path,11.py)?print(b_path)
os.path.abspath(a_path)?通过名称获取当前名称对应的路径(绝对路径)
os.rename(old_path,new_path)?重命名目录和文件
6、re模块(正则匹配)
#?预定义字符集匹配:
\?d:?数字0-9
\D:?非数字
\s:?空白字符
\n:?换行符
\w:?匹配字母数字
\W:?匹配非字母数字
^:表示的匹配字符以什么开头
$:表示的匹配字符以什么结尾
*:匹配*前面的字符0次或n次?#eg:ab(*?能匹配a?匹配ab?匹配abb?)
+:匹配+前面的字符1次或n次
?:匹配?前面的字符0次或1次
{m}:匹配前一个字符m次
{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是
1、findall?#从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个空列表[]
2、compile?#编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]
3、match?#?从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错#?注意:如果规则带了'+',则匹配1次或者多次,无'?+'只匹配一次
4、search?#从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错
六、类与对象
1、面向对象的基本概念:类(所有具有相同属性和方法的对象的集合)、对象(通过类定义的数据结构实例)、方法(类中定义的函数)、类变量(实例中对象公用的,定义在类中且在函数体之外)、实例变量(用self修饰的变量)
2、定义与使用类
定义格式:class?people()
Def?__init__(self,name)
创建对象:p=people(‘xx’)
3、类中的实例方法、动态方法、静态方法
实例方法
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
调用:只能由实例对象调用。
动态方法(类方法classmethod)
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
调用:实例对象和类对象都可以调用。
静态方法(staticmethod)
定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用。
4、类的三大特性(封装特性、继承特性、多态特性)
封装特性
1、类里面不光有属性还有方法。
2、这种将属性通过方法直接在类内部操作的形式叫做封装。这里的封装是把?属性封装在类内部。
继承特性
1、继承:类的继承是面向对象程序设计的一个重要思想,继承时子?类可以继承父类的内容,包括成员变量和成员函数。
2、在继承中一个类被另外一个类继承这个类称之为父类也称之为基?类,则另外一个类则为子类也称之为派生类。
多态特性
1、多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象?调用相同的方法,执行产生不同的执行结果。
2、例如同样是人,但是当问起一个人的职业时会有不同的结果,可能是?软件测试工程师,可能是HR?3、一个对象的属性和行为不是由他所继承的父类决定的,而是由其本身?包含的属性和方法决定的。