Python编程Day5——可变与不可变类型、数据类型整合
一、可变与不可变类型
1、可变类原值型:只改变,但id不变,证明就是在改变原值,是可变类型
2、不可变类型:值改变,但id也跟着改变,证明是产生了新的值,是不可变类型
1 x=9 2 print(id(x)) 3 x=10 4 print(id(x)) 6 l=['a','b'] 7 print(id(l)) 8 l[0]='A' 9 print(l) 10 print(id(l))
二、整形int
1、用途:用来记录年龄、等级、数量
2、定义方式age=10#age=int(10)
3、数据类型转换x=int('123456')>>>字符串转成整形输出
print(x,type(x))
常用操作:数学运算和比较运算
三、 浮点型float
1、用途:用来记录身高、工资、体重
2、定义方式:salary=10.1#salary=float(10.1)
3、数据类型转换:只能讲包含小数的字符串转成float x=float('3.1')>>>print(x,type(x))
操作方式:数学运算和比较运算
四、字符串str
1、用途:记录描述性质的状态
2、定义方式:在单引号、双引号、三引号内包含一串字符串
msg='hello'#msg=str('hello')
# 数据类型转换:所以类型都可以被str转成字符串类型
# res=str([]1,2,3)>>>print(res,type(res))
3、常用操作+内置方法:优先掌握的操作:*****
3.1、按索引取值(正向取+反向取):只能取msg='hello'>>>print(msg[0],type(msg[0]))
1 ''' 2 msg='hello' 3 print(msg[0],type(msg[0])) 4 print(msg[-1]) 5 print(msg[-2])#反取向 6 msg[0]='H'#只能取 7 '''
# 3.2、切片(顾头不顾尾,步长)
1 ''' 2 msg='hello world' 3 res=msg[0:3:1]#0 1 2 4 print(res) 5 print(msg) 6 7 正向取: 8 msg='hello world' 9 res=msg[:] 10 res=msg[::2]#0 2 4 6 8 10 11 print(res) 12 反向取: 13 msg='hello world' 14 res=msg[-1:-12:-1] 15 res=msg[-1::-1] 16 res=msg[::-1] 17 print(res) 18 '''
# 3.3、长度len
1 ''' 2 msg='hello world' 3 print(len(msg)) 4 '''
3.4、成员运算in和not in:判断一个子字符是否存在于大的字符串中
1 ''' 2 msg='hello world' 3 print(len(msg)) 4 '''
3.5、移除空白strip:用来去除字符串左右两边的字符
1 ''' 2 msg=' hello ' 3 print(msg.strip()) 4 5 print('****888eg**on*****'.strip('*'))#只能去除字母左右两边的* 6 print('****+-\、/egon#@%&$*****'.strip('*+-\/、$#@%&'))#去除字母左右两边的符号 7 8 name=input('username>>>:').strip() 9 pwd=input('password>>>:').strip() 10 if name=='egon' and pwd=='123': 11 print('login successful') 12 1else: 13 print('出错了') 14 '''
3.6、切分split,针对有规律的字符串,按照某种分隔符切成列表
1 1 '''info='egon:18:male' 2 2 res=info.split(':') 3 3 print(res,type(res)) 4 4 print(res[0],res[1]) 5 5 6 6 cmd='get|a.txt|3333' 7 7 print(cmd.split('|',1))''' 8 8 # 用:号做连接符将纯字符串的列表拼接成一个字符串 9 9 # l=['egon','18'','male''] 10 10 # res=l[0]+':'+l[1]+':'+l[2] 11 11 # res=':'.join(l) 12 12 # print(res)
需要掌握的操作
1 # 1、strip、lstrip、rstrip 2 # print('******egon*******'.strip('*')) 3 # print('******egon*******'.lstrip('*')) 4 # print('******egon*******'.rstrip('*')) 5 6 # 2、lower,upper 7 # print('ABC123'.lower()) 8 # print('ABC123'.upper()) 9 10 # 3、startwith,endwith 11 # msg='alex is dsb' 12 # print(msg.startwith('alex')) 13 # print('msg.endwith('b')')
1 4、format的三种玩法 2 # res = 'my name is %s my age is %s' % ('egon', 18) 3 # print(res) 4 # res='my name is {name} my age is {age}.format(age=18,name='egon') 5 # print(res) 6 7 # 了解 8 # res = 'my name is {} my age is {}'.format('egon',18) 9 # res = 'my name is {0} my age is {1}'.format('egon',18) 10 # print(res)
1 5、split,rsplit 2 # msg='a:b:c:d' 3 # print(msg.split(':',1)) 4 # print(msg.rsplit(':',1))
1 6、replace 2 # msg='kevin is kievn is asdjk' 3 # res=msg.replace('kivin','as',1) 4 # print(res)
1 7、isdigit 2 # print('123123'.isdigit()) #如果字符串是由纯数字组成的,则返回Ture 3 # print('123123 '.isdigit()) #Flase 4 # print('123123asdc'.isdigit()) #Flase 5 # print('123123.2'.isdigit()) #Flase 6 # score=input('>>>:').strip() #score='sdjsfjskk' 7 # if score.isdigit(): 8 # score=int(score) 9 # if score>=90: 10 # print('优秀') 11 # else: 12 # print('差') 13 # else: 14 # print('必须输入数字')
五、字符串str
1、用途:记录描述性质的状态
2、定义方式:在单引号、双引号、三引号内包含一串字符串
msg='hello'#msg=str('hello')
# 数据类型转换:所以类型都可以被str转成字符串类型
# res=str([]1,2,3)>>>print(res,type(res))
3、常用操作+内置方法:优先掌握的操作:*****
3.1、按索引取值(正向取+反向取):只能取msg='hello'>>>print(msg[0],type(msg[0]))
1 ''' 2 msg='hello' 3 print(msg[0],type(msg[0])) 4 print(msg[-1]) 5 print(msg[-2])#反取向 6 msg[0]='H'#只能取 7 '''
3.2、切片(顾头不顾尾,步长)
1 ''' 2 msg='hello world' 3 res=msg[0:3:1]#0 1 2 4 print(res) 5 print(msg) 6 7 正向取: 8 msg='hello world' 9 res=msg[:] 10 res=msg[::2]#0 2 4 6 8 10 11 print(res) 12 反向取: 13 msg='hello world' 14 res=msg[-1:-12:-1] 15 res=msg[-1::-1] 16 res=msg[::-1] 17 print(res) 18 '''
3.3、长度len
1 ''' 2 msg='hello world' 3 print(len(msg)) 4 '''
3.4、成员运算in和not in:判断一个子字符是否存在于大的字符串中
1 ''' 2 msg='kexin is dsb' 3 print('kevin'in msg) 4 print('dsb'in msg) 5 print('aaa' not in msg) 6 print(not 'aaa' in msg) 7 '''
3.5、移除空白strip:用来去除字符串左右两边的字符
1 ''' 2 msg=' hello ' 3 print(msg.strip()) 4 5 print('****888eg**on*****'.strip('*'))#只能去除字母左右两边的* 6 print('****+-\、/egon#@%&$*****'.strip('*+-\/、$#@%&'))#去除字母左右两边的符号 7 8 name=input('username>>>:').strip() 9 pwd=input('password>>>:').strip() 10 if name=='egon' and pwd=='123': 11 print('login successful') 12 else: 13 print('出错了') 14 '''
3.6、切分split,针对有规律的字符串,按照某种分隔符切成列表
1 '''info='egon:18:male' 2 res=info.split(':') 3 print(res,type(res)) 4 print(res[0],res[1]) 5 6 cmd='get|a.txt|3333' 7 print(cmd.split('|',1))'''
1 用:号做连接符将纯字符串的列表拼接成一个字符串 2 # l=['egon','18'','male''] 3 # res=l[0]+':'+l[1]+':'+l[2] 4 # res=':'.join(l) 5 # print(res)
3.7、循环
# for item in 'hello':
# print(item)
# 需要掌握的操作
1 # 1、strip、lstrip、rstrip 2 # print('******egon*******'.strip('*')) 3 # print('******egon*******'.lstrip('*')) 4 # print('******egon*******'.rstrip('*'))
1 # 2、lower,upper 2 # print('ABC123'.lower()) 3 # print('ABC123'.upper())
1 # 3、startwith,endwith 2 # msg='alex is dsb' 3 # print(msg.startwith('alex')) 4 # print('msg.endwith('b')')
1 # 4、format的三种玩法 2 # res = 'my name is %s my age is %s' % ('egon', 18) 3 # print(res) 4 # res='my name is {name} my age is {age}.format(age=18,name='egon') 5 # print(res) 6 7 # 了解 8 # res = 'my name is {} my age is {}'.format('egon',18) 9 # res = 'my name is {0} my age is {1}'.format('egon',18) 10 # print(res) 11 # 5、split,rsplit 12 # msg='a:b:c:d' 13 # print(msg.split(':',1)) 14 # print(msg.rsplit(':',1))
1 # 6、replace 2 # msg='kevin is kievn is asdjk' 3 # res=msg.replace('kivin','as',1) 4 # print(res)
1 # 7、isdigit 2 # print('123123'.isdigit()) #如果字符串是由纯数字组成的,则返回Ture 3 # print('123123 '.isdigit()) #Flase 4 # print('123123asdc'.isdigit()) #Flase 5 # print('123123.2'.isdigit()) #Flase 6 # score=input('>>>:').strip() #score='sdjsfjskk' 7 # if score.isdigit(): 8 # score=int(score) 9 # if score>=90: 10 # print('优秀') 11 # else: 12 # print('差') 13 # else: 14 # print('必须输入数字')
1 # 了解的操作 2 #1、find,rfind,index,rindex,count 3 # print('123 ke123ke'.find('ke')) 4 # print('123 ke123ke'.rfind('ke')) 5 # print('123 ke123ke'.index('ke')) 6 # print('123 ke123ke'.rindex('ke')) 7 8 # print('123 ke123ke'.find('xxxx')) 9 # print('123 ke123ke'.index('xxxx')) 10 # print('123 ke123ke'.count('ke',0,6)) 11 12 #2、center,ljust,rjust,zfill 13 # print('egon'.center(50,'*')) 14 # print('egon'.ljust(50,'*')) 15 # print('egon'.rjust(50,'*')) 16 17 # print('egon'.rjust(50,'0')) 18 # print('egon'.zfill(50)) 19 20 #3、captalize,swapcase,title 21 # print('abcdef dddddd'.capitalize()) 22 # print('abcAef dddddd'.swapcase()) 23 # print('abcAef dddddd'.title()) 24 25 #4、is数字系列 26 num1=b'4' #bytes 27 num2='4' #unicode,python3中无需加u就是unicode 28 num3='四' #中文数字 29 num4='Ⅳ' #罗马数字 30 31 # bytes与阿拉伯数字组成的字符串 32 # print(num1.isdigit()) 33 # print(num2.isdigit()) 34 # print(num3.isdigit()) 35 # print(num4.isdigit()) 36 37 # 阿拉伯数字组成的字符串 38 # print(num2.isdecimal()) 39 # print(num3.isdecimal()) 40 # print(num4.isdecimal()) 41 42 # 阿拉伯数字\中文\罗马组成的字符串 43 # print(num2.isnumeric()) 44 # print(num3.isnumeric()) 45 # print(num4.isnumeric()) 46 47 #5、is其他
# ======================================该类型总结====================================
# 存一个值
# 有序
# 不可变
# msg=' hello '
# msg.strip()
# print(msg)
六、列表list
1、用途:按照位置记录多个值,索引对应值
2、定义方式:在[]内用逗号分隔开多个任意类型的值
1 # l=['a',11,11.3]# l=list['a',11,11.3] 2 # 数据类型转换:但凡能够被for循环的数据类型都可以传给list,被其转换成列表 3 # res=list('hello')# >>>'h','e','l','l','o' 4 # res=list(123) #不可以被for循环 5 # print(res)
# res=list({'a':1,'b':2,'c':3})
# print(res)
3、常用操作+内置的方法(优先掌握的操作)
3.1、按照索引存取值(正向存取+反向存取):即可存也可取
1 # l=['a','b','c','d','e'] 2 # print(l[0]) 3 # print(l[-1]) 4 # print(id(l)) 5 # l[0]='A' 6 # print(id(l))# 输出id相同,属于可变型
# 强调--------!!!!!!!:对于不存在的索引会报错
1 # l[5]='AAAAA'# 报错 2 # dic={"k1":111} 3 # dic['k2']=2222 4 # print(dic)
3.2、切片(顾头不顾尾,步长)
1 # l=['a','b','c','d','e'] 2 # print(l[1:4]) 3 # print([::-1])
3.3、长度
1 # l=['a','b','c','d','e'] 2 # print(len(l))
3.4、成员运算in和not in
1 # l=['a','b','c','d','e'] 2 # print('a'in l)
3.5、追加与insert
1 # l=['a','b','c','d','e'] 2 # l.append('xxx') 3 # l.append('yyy') 4 # print(l) 5 # l.insert(0,'xxx') 6 # print(l)
3.6、删除
1 # l=['a','b','c','d','e'] 2 # del是一种通用的删除操作,没有返回值 3 # del l[0] 4 # print(l ) 5 6 # dic={'k1':1} 7 # del dic['k1'] 8 # print(dic) 9 10 # l.remove# (指定要删除的那个元素,没有返回值) 11 # res=l.remove('b') 12 # print(l) 13 # print(res) 14 15 # l.pop# (指定要删除的那个元素的索引,可以返回刚刚那个删除掉的元素) 16 # l=['a','b','c','d','e'] 17 # l.pop(-1) 18 # res=l.pop(1) 19 # print(l) 20 # print(res)
3.7、循环
1 # l=['a','b','c','d','e'] 2 # for item in l: 3 # print(item) 4 # 练习:队列--先进先出 5 # l=[] 6 # 入队 7 # l.append('first') 8 # l.append('scecond') 9 # l.append('ehird') 10 # print(l) 11 # 12 # 出队 13 # print(l.pop(0)) 14 # print(l.pop(0)) 15 # print(l.pop(0)) 16 17 # 堆栈---先进后出 18 # 需要掌握的操作 19 # l=['aaa','bbb',345] 20 # l.clear() 21 # l.append([1,2,3]) 22 # 23 # for i in [1,2,3]: 24 # l.append(i) 25 # l.extend([1,2,3]) 26 # 27 # 28 # l.reverse() 29 # 只有在类中索引元素都是同种类型的情况下才能使用sort排序 30 # l=[1,3,2] 31 # l.sort(reverse=True) 32 # 33 # l=['a','e','f','d'] 34 # l.sort() 35 # print(l)
# ======================================该类型总结====================================
# 存多个值
# 有序
# 可变