dcsxlh

导航

 

python7天的总结
------------------------------------------------------------------------------------------------

评价:1、函数 def  自定义行数和内建函数

        2、re模块

       3、python3和python的去别

     4、字典,元组,列表,元组,集合的联系和区别

Python

一、Python介绍:

1、什么是Python?

Python是一门面向对象,解释型的动态类型的编程语言;

Guido van Rossunm 吉多·范罗苏姆 荷兰计算机程序员

 

2、什么是面向对象?

Python中一切皆为对象,对事物的描述和方法系统的定义为一个类,在这个类中的具体的一个实例就是我们所说的对象

例如:人就是一个类   -------  wf 对象

 

3、什么是解释型?

Python程序执行时无需先进行编译成二进制代码,直接在执行过程中对语句一条条进行编译

例如:java  装了jdk 编译,python不需要,可以直接编译

 

4、什么是动态类型?

是指Python程序在运行时可以改变其结构,新的函数可以被引进,已有函数可以被删除

例如:在运行的情况下修改,返回值(存储过程中可以运行以后拿到值,进行运用)

 

5Python的特点?

a.特点:简单、易学、免费开源、可扩展性、可移植、高级语言、丰富的类库;

b.应用领域:网页开发、可视化界面开发、系统编程、数据分析、网络爬虫(用的多)、自动化脚本开发(测试用的多); javaruby 、数据分析、AI人工智能、大数据、云计算、

 

6、Python的实际应用:

Youtube、豆瓣网、知乎

 

7Python所支持的平台:

windowslinux ,macos

 

8Python市面上使用的版本:

Python 2.7.xxxx (现在一些windows都支持,稳定)

Python 3.0.xxxx 现在的主流会越来越流行(目前最新版本3.9);

差别:版本的高低级而已,就是有一些功能不一样

二、Python中的运算

1,算术运算符

12,- 3,* 4,/ 5,% 取模6,**取幂

7//取整除'''

注意点:他们的优先级:先乘除后加减

2,赋值运算

1,+=  加法赋值 2-=   减法赋值;3,*= 乘法赋值

4/=  除法赋值5,%=  取模赋值;6,**=  幂赋值运算符

3比较运算符

1,==  等于2,!=  不等于;3>  大于;4<  小于;

5>= 大于等于;6<=  小于等于

注意:结果事返回布尔值:falsh true

4,逻辑运算符

1,and ;2or 3或;4,not   

返回的结果也是布尔值;

5,位运算

1,&按位与

概念:把十进制转化换二进制,上下对应位都是1,则取1,否则取0,结果再转化换十进制

2,按位或

把十进制转换成二进制,上下对应位只要有一个是1,则取1,都为0则取0,结果再转换十进制|

3,按位异^

把十进制转换成二进制,上下对应位不相同,取1,相同取0,结果再转换成十进制

4, 按位取反~

公式 -(a+1) 变量a先加1再取负数

5, 向左移 <<

把变量转换成二进制,左移相应的位数把小数点右移小数位数,结果是小数点左边的二进制转换成十进制

6, 向右移 >>

把变量转换成二进制,右移两位把小数点左移两位,结果是小数点左边的二进制转换成十进制

7,成员运算符:innot in

返回的也是布尔值;

三、 索引与切片

索引:索引 在公司中一般也叫做下标或者角标

1、我们可以通过索引位读取序列中的指定元素,索引可分为正向索引和负向索引

2、索引的表达式:str[x] 其中x是需要我们自己填写的一个数据,

如:str[1]str[0]

3、索引中正向索引从0开始,负向索引从-1开始

4、表示不隔位

 

[起始索引位:结束位:步长值]

切片语法中:包含起始不包含结束,隔位不能为0可以为11表示不隔位,2开始有效果

 

遍历函数中:包含起始不包含结束,隔位不能为0可以为

print (list(range(10)))

打印的结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2,切片:

1、切片的表达式:str[start_index:end_index:step] [开始索引:结束索引:步长值]

2、解释:start_index:开始索引(可以取值)

 end_index:结束索引(不能取值)

 step:步长 (脚跨了几个楼梯)

3、注意

 1)切片中如果步长不写则默认为1

 2)切片取值从开始索引到结束索引,且结果不包括结束索引位的值 (取到索引位的前一位)

 3)步长从开始索引走起,步长分正负

四、函数

1,字符串函数

capitalize():首字符大写

count():统计具体字符的个数

join():把字符串中的字符按自定义的分隔符连接在一起

split():把字符串通过制定标识符进行分割

strip(ab):删除字符串开头和结尾有a或者b的字符

istrip(ab):删除字符串开头有ab序列的字符

rstrip(ab):删除字符串结尾有ab序列的字符

startswith():判断字符串是否以什么开始

endswith():判断字符串是否以什么结尾

find/rfind():查询指定字符串的下标

replace(substring,newstring,max):替换字符

lower():方法转换字符串所有大写字符为小写字符

upper():字符串中的小写转换为大写

isdigit():判断字符串中是否全为数字

isalpha():判断字符串中是否全为字母

isalnum():判断字符串当中是否全都为数字或者字母或者字母与数字组合

istitle():判断字符串中首字母是否为大写,其他是否为小写,其他不为小写则为否

isupper()/islower():is开头的就是判断一个字符串是否展示位都是大写后者都是小写

2,列表

索引与切片赋值

list1=[1,88,'test','duoceshi']

list1[0]=666 结果为 [666,88,'test','duoceshi']

list1[2:]=sdada 结果为 [1,88,s,d,a,d,a]

append():添加一个元素

list1=[1,2,3,4,5]

list1.append('a') 结果为 [1,2,3,4,5,a]

extend():连接两个列表

list1=[1,2,3,4,5] list2=[6,7,8]

list1.extend(list2) 结果为 [1,2,3,,5,6,7,8]

insert():在指定位置前插入一个元素

list1=[1,2,3,4,5]

list1.insert(0,'test') 结果为 [test,1,2,3,4,5]

remove():删除元素

list1=[1,2,3,4,5]

list1.remove(2) 结果为 [1,3,4,5]

索引删除值

list1=[1,2,3,4]

del list1[0] 结果为 [2,3,4]

index:在列表中查找元素所对应的索引值

list1=[1,2,3,4]

list1.index(2) 结果为 1

sort:实现列表的升序排列

list1=[1,2,3,4,1]

list.sort() 结果为 [1,1,2,3,4]

sorted:实现降序排列

list1=[1,2,3,4,1]

print(sorted(list1,reverse=Trrue))

结果为 4,3,2,1,1

reverse函数:列表元素反转

list1=[1,2,3,4]

list1.reverse() 结果为 [4,3,2,1]

pop函数

list1=[1,2,3,4]

pirnt(list1.pop(0)) 结果为 1

3,元组

格式:a=(1,2,3)

元组转化为列表

b=list(a)

print(b)

列表转化为元组

a=tuple(b)

print(a)

4,字典

格式:a={'name':'zhangsan','age',18}

 

1,添加键

a[sex]='nan'

2,取出键

a.keys()

print(a)

3,取出值

a.values()

print(a)

4,取出具体键的值

print(a['name'])

5,字典添加元素

a.setdefault('sex','男')

6,删除字典

del (a)

print(a)

7,删除指定的键,连同值也删除

del(a['name'])

8,字典的遍历

for key in a:

print(key,a[key])

9,用items完成遍历

for key,values in a.items():

print(key,values)

10,POP(key)函数,删除指定键并返回删除的值

print(a.pop('name')) print(a)

结果为[age:18]

11,clear()清空字典所有项

a.clear()

print(a) 结果为[]

12,get(key),通过key获取值,当键不存在,返回none

print(a.get('name')) 结果为[zhangsan]

13,fromkeys函数可以给具体的键指定值

print({}.fromkeys(['name'],'age'))

print({}.fromkeys(['name'],'age'),'duoceshi')

14,popitem

print(a.popitem())

print(a)

15,update()函数利用一个字典变更另一个字典

b={'sex':'nan'}

a.update(b)

print(a)

5,集合

1、可变集合set

list1 = [1,1,1,88,88,'duoceshi','dcs']

set1 = set(list1)

set1.add('dcs')

set1.remove('dcs')

set1.pop() #把最前面这个给删除了

set1.clear()

print (set1)

 

2、不可变集合frozenset

test = 'hello'

a = frozenset(test)

b = a.copy()

b.add('888') #报错AttributeError: 'frozenset' object has no attribute 'add'

print (b)

 

五、 模块

1,time模块:

time.time-----1970年到今天过了多少秒

time.ctime------显示当前日期

time.sleep(2)--------休眠

time.asdtime()--------显示当前日期

time.strftime('%Y-%m-%d-%H-%m-%s')

2,random模块

random----随机生成0开头的浮点数

random.random()------随机生成小于1的小数

random.randint(1,5)------随机取一位整数,包含开始

random.randrange(1,100,2)-----根据range函数:(起始,结尾,隔位),支取1个

random.randrange(0,101,2)---取1-100之间的偶数

a=[1,2,3,4,5,6]

random.choice(a)---------随机取a列表中的一个数字

random.sample(a,3)-----列表中随机取自己定义的个数的值

random.shuffle(a)---------重新打乱a列表的顺序(先洗牌)

print(a)-------再打印

3,String模块

string.digits-----生成0123456789

string.hexdigits------生成0123456789abcdefABCDEF

string.ascii_uppercase----生成26个大写字母

string.ascii_lowercase-------生成26个小写字母

string.ascii_litters------生成26个小写字母和26个大写字母,

4,加密算法

base64位编码

1,加密

a=base64.b64encode(b'123456')

print(a) 结果为 b'MTIzNDU2'

2,解码

c=base64.b64decode(a)

print(b) 结果为 b'123456'

 

MD5加密

  在线加解密:

http://encode.chahuo.com/

https://tool.oschina.net/encrypt?type=2

md5=hashlib.md5()#创建一个对象:md5

md5.update(b'123456')#通md5对象来调用update方法对某个值进行加密处理过

print(md5.hexdigest()) #通过hexdigest将md5加密密码进行十六进制转换输出

结果为:e10adc3949ba59abbe56e057f20f883e

5,os模块

a='D:\\www'

b='qqq.txt'

os.gitcwd()#获取当前操作文件的路径

os.path.isfile(a) #判断是不是文件

os.path.isidr(a) #判断是不是目录

os.path.exists(a) #判断文件或目录是否存在

os.listdir(a) #列出指定目录下的目录或文件

os.path.split(a) #分割文件名与目录

os.path.join(a,b) #连接目录与文件名或目录

os.mkdir(a) #创建一个目录

os.rename(old,new) #更改目录名称

六、判断与循环

1,判断

1、if条件判断语句单分支

if 判断条件:

语句块1……

else:

语句块2……

2、if条件判断语句多分支

if 判断条件1:

语句块1……

elif 判断条件2:

语句块2……

else:

语句块n

2,循环

1, while循环语句

while 条件表达式:

循环体语句

while什么时候进入循环?当循环条件成立时,进入循环

while什么时候退出循环?当循环条件不成立时,退出循环

注意:在写while循环语句时一定要让循环条件发生变化,否认很容易陷入死循环中

2, 循环语句

1、for循环的语法格式如下:

for ... in ...

语句块

2、先熟悉下range()函数:如果需要遍历一个数字序列,可以使用python中内建的函数range()

for i in range (10) #打印0到9、不包含10

for i in range (1,10) #打印1到9、不包含10

for i in range (0,10,2) #打印结果:0,2,4,6,8不包含10

3, continue语句

用法:continue语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。

4,break语句

用法:语句会立即退出循环,在其后边的循环代码不会被执行。

七、封装

1)封装定义:

2)封装的优点:

2.1封装数据可以很好的保护隐私,(将不需要对外提供的内容都隐藏起来)

2.2 封装方法主要原因是隔离复杂度

2.3 封装提高了代码的复用性。

2.4隐藏对象的属性和实现细节,提供公共方法对其访问

3)python类的封装两种

3.1公用(共有):类中的变量和方法公用;他们名称前都没有下划线,公有的变量和方法,在类的外部,内部,以及子类都可以方位

3.2私有:在类中的变量或方法下,下划线__开头命名,则改变量或方法为私用,私有的变量和方法,只能在本类内部使用,类的外部以及子类都五法使用。

私有属性:

格式:__属性名=值    在类的外部不能使用(对象不能调用属性)

私用化封装后的限制:

1)类 可以访问

2)类外/对象外  不可访问

3)子类和子类对象  不可访问

八、继承

继承特性

1、继承:类的继承是面向对象程序设计的一个重要思想,继承时子

类可以继承父类的内容,包括成员变量和成员函数。

2、在继承中一个类被另外一个类继承这个类称之为父类也称之为基

类,则另外一个类则为子类也称之为派生类。

九、多态

1、多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象

调用相同的方法,执行产生不同的执行结果。

2、例如同样是人,但是当问起一个人的职业时会有不同的结果,可能是

软件测试工程师,可能是HR

3、一个对象的属性和行为不是由他所继承的父类决定的,而是由其本身

包含的属性和方法决定的

 ==========================================================

案例2:

评价:

1、案例写的详细,但是总结就是笔记

2、总结根据自己的情况,进行总结

一、 Python定义

二、 Python特点

三、 Python的不同点:

胶水语言、输出语句(print)、注释(Ctrl+/、#、’’’)

格式化输出:基本格式:('%d'%a)

%s :字符串 (采用str()的显示)

%c :单个字符

%d:十进制整数

%i :十进制整数

%o:八进制整数

%x:十六进制整数

%f:浮点数

%% :百分数

常用的运算操作:算术运算(加减乘除)、赋值运算(+=)、比较运算、逻辑运算、位运算、成员运算(in、not in)

四、 索引与切片

索引格式:str[ x]x为索引号

切片格式:str[start_index:end_index:step]str[::-1] 反转

     常用字符串函数:

     1、str.capitalize():实现首字母大写

2. str.count('xx')统计指定字符在当前字符串中出现的次数

3.'_'.join('xx')(拼接函数)自定义分割符,来分割当前的字符串,例如:'@'.join('xx')用@来将xx进行分割

4.分割函数 str.split('xx'):指定当前字符串的一个字符作为分割符(用,替代字符串中的这个字符),且返回一个列表

例如:str = 'abcdefghigkl'

str1= 'admin:123123'

num = str.split('j')

print (num) 显示结果:['aSDfgh', 'ksl']

5.str.strip('xx'):删除字符串开头和结尾的字符

格式:str.strip('XX'):删除字符串以XX字符开头和结尾的内容

6、str.lstrip('XX'):删除字符串以XX字符开头的内容

print (str.lstrip('a')) 显示结果:bcdefjghigkl

7、str.rstrip('XX'):删除字符串以XX字符结尾的内容

print str.rstrip('l') 显示结果:abcdefjghigk

rstrip 意思:删除末尾字符

8、str.startswith('XX'):判断字符串中以XX字符串开头,如果条件成立返回 TRUE,

否则返回FALSE

print str.startswith('a') 显示结果: True #swith

9、str.endswith('XX')判断字符串中以XX字符串结尾,如果条件成立返回TRUE,否则

# 返回FALSE

print str.endswith('l') 显示结果:True

startswith(self prefix start end)

方法的参数

prefix 开始

end 结束

self 自己本前缀

start 身

10、find、rfind通过具体的值来找到对应值的索引位,

str.find('XX')

从字符串左边开始查找指定的字符串,且返回的是当前字符的索引位,一旦找到第一个将停止查找,如果查找的对象不存在则返回-1

print (str.find('n'))

显示结果:-1

print (str.find('c'))  # 左边开始查 显示结果:2 显示第一个的下标,没有显示-1

11、str.rfind('XX')从字符串右边开始查找指定的字符串,且返回的是当前字符的索引位,一旦找到第一个将停止查找,如果查找的对象不存在则返回-1

print  (str.rfind('k'))

显示结果:11  # 左边开始查<br>注意:取得索引都是正向索引  ,注意当出现多个同样的字符find和rfind 是不同的

12、str.replace('XX','YY')替换指定的字符串,且可以指定替换次数

print (str.replace('c', 'dcs'))

显示结果:abdcsdefjghigkl

13、replace()替换字符串中的字符 :replace(substring,newstring,max)

str.replace('XX', 'YY', 1)  #

方法中的1表示将指定字符替换的次数,从左到右开

始替换 --这里次数为1的话只会替换第一个发现的字母XX改下:

str = 'asDfghjksl'

print  (str.replace('c', 'dcs', 2))

显示结果:

14、str.lower()将字符串中的所有大写字母改为小写print  (str.lower())

显示结果(小写):asdfghjksl

15、str.upper()将字符串中的所有小写字母改为大写

print  (str.upper()) 显示结果:ABCDEFJGHIGKL

字符串判断方法

mtehod   方法

以下都是字符串的判断,结果只有true or false

17、name.isalnum() 判断字符串是否是字母或者数字  # alnum字母和数字,小写字母。

name = "1123abcdefg"

print(name.isalnum()) 判断字符串是否是字母

显示结果:ture

print (name.isdigit()) 判断字符串是否是数字  # digit

显示结果:flse

18、print  (name.islower()) 判断字符串是否是小写

显示结果:ture

19、print  (name.isupper()) 判断字符串是否是大写,有小写就显示false,只有大写字母和汉字仍为true

显示结果:flse

20、name.isspace() 判断字符串是否全部由空格组成。

五、列表、元组、字典及其常用操作

列表(list)

一、定义

1.list=[1,2,3,4,5]

2.通过list()进行转换

3.对列表操作:

通过索引赋值:格式  列表名[ 索引]=“ 新值”

通过切片赋值:格式  列表名[ 索引:]=“ 新值”

二、函数

1、赋值

第一种:赋值(索引方式)

a=[1,2,3,4,5,6] b=['大',‘家’,‘好’]

a[4]='yy'

结果:[1,2,3,4,'yy',6]

注意点:1.把原来对应索引位置替换成新的值

第二种:

a[2:]='蔡瑞峰为什么这么帅'

结果:[1,2,'蔡','瑞','峰','为','什','么','这','么','帅'](从索引号为2开始被后面的字符替代)

2、append   添加函数(默认添加在列表最后)

格式:变量名.append('hello')

举例:a.append('hello')

结果:[1,2,3,4,5,6,'hello']

3、extend     拼接函数(两个列表的拼接)

格式:变量名1.extend(变量名2)

举例:a.extend(b) (将b拼接在a后面)

4、insert      插入函数

1、根据索引值插入值:(如果索引已存在插入,之前的索引值+1, 不存在出入就插入指定索引值,超出索引值也是在最后显示)

第一种情况:超出的索引值

s =[1,2,3,4,5] #定义一个列表

s.insert(10,'hello') #给索引值为10的位置在最后一位

print(s) #[ 1, 2, 3, 4, 5,'hello']<br>备注:超出索引范围,都默认显示在列表的最后一位

 

 第二种情况:存在的索引值

s =[1,2,3,4,5] #定义一个列表

s.insert(0,'hello') #给索引值为0的位置插入一个具体的值

print(s) #['hello', 1, 2, 3, 4, 5]<br>备注:插入的值是当前指定的索引,原列表中的索引加1或(往后推一位)

 

 第三种情况:负向索引

s =[1,2,3,4,5,6] #定义一个列表

s.insert(-1,'hello') #给索引值为0的位置插入一个具体的值

print(s) #[1, 2, 3, 4,5,'hello', 6]

5、remove   删除

方法一:删除的是具体的值

第一种情况:有对应的值,有且只有一个

c=[1,2,3,4,5,6,"a"]

c.remove(2)

print(c)

打印结果: [1, 3, 4, 5, 6, 'a']

 

第二种情况: 删除有多个一样的值,只删除第一个

l = ['c', 1, 2, 3, 4,'c' ,5, 6, 'c']  # 定义一个列表

l.remove("c")  # 移除l列表中对应的具体值

print(l)    #显示结果 [1, 2, 3, 4, 'c', 5, 6, 'c']<br>备注:多个同样的值,从左开始删除第一个值,

 

# 移除l列表中对应的具体值

第三种情况:删除不存在的值,报错,不在删除的列表中

l = ['c', 1, 2, 3, 4, 5, 6, 's']  # 定义一个列表

l.remove("a")  # 移除l列表中对应的具体值

print(l)  # 显示结果:报错    删除的内容不存在列表中

6、del    删除

方法二:del 删除

第一种情况:

del  通过索引 删除列表种对应的元素

# l1 =[1,2,3,4,5] #定义一个列表

# del l1[4] #删除对应列表中对应的索引值对应的值

# print(l1) #打印结果:[1, 2, 3, 4]

 

第二种情况: 超出索引值,删除列表是错误的

l1 =[1,2,3,4,5] #定义一个列表

del l1[6] #删除对应列表中对应的索引值对应的值

print(l1) #显示结果:list assignment index out of range<br>备注:报错,列表索引超出范围

 

7、sort        升序

场景1、l1 =[5,4,3,2,1] #定义一个列表

l1.sort() #通过sort来对列表进行升序排序

print(l1) #[1, 2, 3, 4, 5]

 

<br><br>场景二:字符和数值在一个列表中不能进行排序,报错

c=[1,2,"a",3,4,3,5,6,"a"]

c.sort()

print (c)

报错TypeError: '<' not supported between instances of 'str' and 'int'

 

场景三:列表中出现多个相同的数值排序(根据数值的大小并列)

d=[1,2,9,4,3,6,6,5,6]

d.sort()

print(d)

打印结果:[1, 2, 3, 4, 5, 6, 6, 6, 9]

 

8、sorted    降序

sorted要配合reverse一起使用才能实现升序与降序

格式:sorted(变量名,reverse=True)降序

sorted(变量名,reverse=False)升序

 

9、reverse  反转

格式:变量名.reverse()(实现列表中元素反向排列)

10、pop  删除(默认删除最后一个元素,也可以通过索引来删除)

格式:变量名.pop()

变量名.pop(索引号)

10、场景一:index根据列表中具体的值得出索引值

d=[1,2,9,4,3,6,6,5,6]

print(d.index(2))

打印结果:1

------------------------------------------------------------------------------------------------------------

元组(tuple)

一、定义

元组定义后由于不可直接修改则相对于代码来说要更加安全

1.a=(1,1,2,3,4,5,)

2.通过tuple()进行转换

3.tuple(a)=tuple(b)+tuple(c) 元组的拼接

注意:元组不能进行元素的修改与添加,因此要修改元祖内的数据需要通过list(tuple)将元组转化为列表

-------------------------------------------------------------------------------------------------------------------------------------------------------

字典(dict)

1 python中的字典:dict类型

2 键值对组成

3 键是唯一,值可以不唯一

4 {} 英文的大括号 也叫花括号

5 字典中键值是一个整体,如有多个键值对要用英文的,逗号隔开

6 整数类型不需要加单双引号外,其它都需要加单双引号

7 键和值用英文的:冒号  比如:name:zhangsan

(1)定义一个字典d ={'name':'zhangsan','age':18} #定义一个字典print(type(d))

<class 'dict'>字典的类型

print(d) #打印结果为:{'name': 'zhangsan', 'age': 18}

 

2)列表转换成字典步骤 重点:(使用dict 就可以转换)

第一步:定义一个列表

l =[('name','zhangsan'),('age',18)]

第二步:使用dict 将列表转换成字典

di_ct=dict(l)#将列表转换成为字典

第三步:查看字典的类型

print(type(di_ct)) #<class 'dict'>字典类型

第四步:在打印字典

print(di_ct) #{'name': 'zhangsan', 'age': 18}

备注:字典转换是键与值一组,所以是2个值一组

 

3)字典中添加键值对: 格式:变量名[键] =值

注意:字典中添加新的的键和值

d ={'name':'zhangsan','age':18}#定义一个字典

d['scroe']=100

print(d) #{'name': 'zhangsan', 'age': 18, 'scroe': 100}

 

4)字典中有键,替换值(键不变,值变)

c= {'name': 'zhangsan', 'age': '18'}

c['name'] = 200

print(c) # 打印结果:{'name': 200, 'age': '18'}

小结:《1》、给字典中增加一个键值对:如原字典内没有相同的键值对则新增一个

2》、如原有字典中有相同的键,则会将对于的键的值进行重新赋值''

3、通过keys取出对应的键

d ={'name':'lis','age':18} #定义一个字典

print(d.keys()) #(['name', 'age'])

# 通过keys来取出对应的键

print(type(d.keys())) #<class 'dict_keys'>

 

4、通过values 取出字典中对应的值

v={'name':'lis','age':18} #定义一个字典

print(v.values()) #['lis', 18]

 

 5、通过键来获取对应键的值

k ={'name':'lisi','age':18} #定义一个字典

print(k['name']) #lisi

 

 6、6.1添加设置默认键值setdefault 

mr ={'name':'lis','age':18} #定义一个字典6.1默认值不存在的情况下,直接添加键值mr.setdefault('scroe',100)

1

2

3

4

5

6

<em id="__mceDel"><em id="__mceDel">print(mr) #{'name': 'lis', 'age': 18, 'scroe': 100}<br><br>6.2 已有键值,在使用默认键值不会进行修改,或者增加

mr.setdefault('name','zhangsan')

print(mr) #{'name': 'lis', 'age':  18, 'scroe': 100}<br>备注:已经存在的值的优先级>默认值<br>6.3 直接修改 值,显示最新修改值  (修改默认值优先级小于直接添加的字典值)<br>

mr['name']='wangwu'

print(mr) #{'name': 'wangwu', 'age': 18, 'scroe': 100}<br><br><br>

</em></em>

7、删除键:(删除键,值也没有了)

1

2

3

dellkey={'name':'zhangsan','age':18}

del dellkey[ 'name']

print (dellkey)<br>注意点:键和值都要用引号,除数值外<br><br>

 

 

 8、使用for 循环获取key

1

2

3

d ={'name':'zhangsan','age':18}

for k in d:

    print(k)  #拿到的是:键 值不拿

 

9、使用for循环获取key,values

1

2

3

s ={'name':'zhangsan','age':18}

for k in s:

print(k,s[k])

 

 10、# 通过items()方法来获取对应键值对 

1

2

3

t ={'name':'zhangsan','age':18}

for k,v in t.items():

    print(k,v)

 

 11、'通过pop函数删除指定的键,打印返回对应键的值'''

方法一:pop删除指定的键,返回对应的值

1

2

d2 ={'name':'zhangsan','age':18}

print(d2.pop('name')) #zhangsan

 

 方法二:popitem在字典删除键值对,一般默认在末尾

1

2

d ={'name':'zhangsan','age':18,'':100}

print(d.popitem()) #('', 100)<br>备注:打印结果:字典中最后一个键值

 

 12、clear  来清空当前字典中的键值对,返回一个空字典

1

2

3

d3 ={'name':'zhangsan','age':18}

d3.clear() #通过clear()来清空当前字典中的键值对

print(d3) #  打印结果:{}清空后返回就是一个空字典<br>

 

13、get   ,get通过键获取对应的值

1

2

3

4

5

6

7

d ={'name':'zhangsan','age':18,'':100}

print(d) #{'name': 'zhangsan', 'age': 18, '': 100}

print(d.get('name')) #zhangsan #通过键获取值

print(d.get('')) #100

print(d.get('age')) #18

print(d.get('score')) #None  #通过不存在的键,返回的是none

print(d.get(100)) #None      #通过值去获取,返回时的none

 

 14、快速生成一个新字典的方法fromkeys

方法一:

第一种情况:生成一个新的字典的键

print ({ }.fromkeys(['name','age']))  #{'name': None, 'age': None}

 第二种情况:生成一个字典的键和值

print({}.fromkeys(['name','age'],'a')) #{'name': 'a', 'age': 'a'}

 

 方法三:快速生成字典,并赋同样的值

1

2

d={'name':'zhang','age':18}

print(d.fromkeys(['name','age'],'c')) #{'name': 'c', 'age': 'c'}

 

 

 15、update  方法 将多个字典合并

1

2

3

4

d1 ={'name':'zhangsan','age':18} #定义一个字典

d2={'scroe':100} #定义一个字典

d1.update(d2) #通过update方法将d1字典和d2字典进行合并

print(d1) #{'name': 'zhangsan', 'age': 18, 'scroe': 100}<br>备注:合并字典以后,在d1表中

 

 

 16、copy 复制字典

1

2

3

4

s={"name":"zhangsan","age":15}

c= s.copy()

print (c)

print (s)

 

 

 

 17、del删除字典

1

2

3

4

5

6

7

8

#场景一:

d={"name":"lixi","age":18}

del d

#场景二:删除键

d={"name":"lixi","age":18}

print(d)

# del (d["name"])

# print(d)

  

 备注:has_key  在python2中有,在python3中不存在

六、 Python中的语句

  1. 输入语句input(‘xxx’),输出语句:print(‘xxx’)
  2. If语句:单分支,多分支,if嵌套
  3. While循环语句
  4. For循环语句
  5. Continue语句(跳过指定条件,继续执行后面)
  6. Break语句(退出循环,不再执行break后面的内容)

七、 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 openabs、sum、map)

6.1format(格式化输出函数)

a ='{}'.format('hello','ni','hao')

print(a) #打印结果 hello

6.2 zip(打包函数)

打包:zip(a,b) print(list(zip(a,b)))

解压:s,c=zip(*zip(a,b)) print(list(s))

6.3 open(打开与编辑文件)

      open完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

file: 必需,文件路径(相对或者绝对路径)。

6.4 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)
  2. Time模块(时间的显示)

        time.time()(显示从1970年到现在一共经历的秒数)

time.ctime()(显示当前实时时间)

time.sleep()(休眠,括号内加上数字表示休眠多少秒后再执行)

time.strftime()(自定义时间格式:%Y-%m-%d-%H:%M:%S)

time.asctime()(转换为asc码形式显示时间)

3random模块

random.random() 随机生成0开头的浮点数

random.randint(1,4) 随机取一个在1-4范围内的数(不包含4)

random.sample(a,4) 在a中随机抽取4个数生成一个列表

random.randrange() 递增随机取一个值

random.choice(a) 在a列表中随机取一个值

random.shuffle() 随机洗牌(将列表中的所有元素随机调 动输出)

  1. 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) 重命名目录和文件

6re模块(正则匹配)

预定义字符集匹配:

\ d:    数字0-9

\D:   非数字

\s:   空白字符

\n:   换行符

\w:    匹配字母数字

\W:  匹配非字母数字

^:表示的匹配字符以什么开头

$:表示的匹配字符以什么结尾

*:匹配*前面的字符0次或n #egab能匹配匹配ab 匹配abb 

+:匹配+前面的字符1次或n

?:匹配?前面的字符0次或1

{m}:匹配前一个字符m

{m,n}:匹配前一个字符mn(包括n)mn可以省略,mn都是

1findall    #从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个空列表[]

2compile   #编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]

3match     # 从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错注意:如果规则带了'+',则匹配1次或者多次,无' +'只匹配一次

4search   #从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错

九、类与对象

  1、面向对象的基本概念:类(所有具有相同属性和方法的对象的集合)、对象(通过类定义的数据结构实例)、方法(类中定义的函数)、类变量(实例中对象公用的,定义在类中且在函数体之外)、实例变量(用self修饰的变量)

 

2、定义与使用类

定义格式:class people()

            Def __init__(self,name)

创建对象:p=people(‘xx’)

3、类中的实例方法、动态方法、静态方法

实例方法

    定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
    调用:只能由实例对象调用。

动态方法(类方法classmethod)
    定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
    调用:实例对象和类对象都可以调用。

静态方法staticmethod)
    定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;

    调用:实例对象和类对象都可以调用。

4、类的三大特性(封装特性、继承特性、多态特性)

 ===============================================================

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2020-12-12 09:35  多测师_肖sir  阅读(282)  评论(0编辑  收藏  举报