变量与数据类型
变量
变量:可变的量,变量用于存储事物的状态
变量命名规范
- 变量名的组成由数字,字母,下划线组成
- 数字不能开头
- 变量名不能与Python关键字重名
变量的使用
# 变量名要先定义后使用,变量名要见名知意
# 变量名 = 值
name = "kk"
age = 18
常量
常量:表示不变的量,Python中没有专门记录常量的语法,所有Python的常量都是约定俗成的通常都是用大写表示,常量是可以改的。
# 常量
IP = 3.1415926
数据类型
数据类型
数据类型分两种:整型(int)与浮点型(float)
整型:用于记录年龄,电话号码..
浮点型:用于记录身高,体重,工资..
使用方法:用于算术运算与比较运算
print(int(1+2)) #3
print(int(1*2)) #2
print(int(1/2)) #0
print(float(0.1+0.2)) #0.30000000000000004
print(float(0.1*0.2)) #0.020000000000000004
print(float(0.1/0.2)) #0.5
也可以类型互相转换(转换的过程先转括号里的,在转括号外的)
print(float(int(1))) #1.0 把整型转为浮点型
print(int(float(1.2))) #1 把浮点型转为整型
字符串类型
字符串(str):一般用于表示描述事物的状态
作用:被引号包裹的一串字符
字符串的内置方法:
# 索引取值(正向取+反向取) :只能取
# 切片(顾头不顾尾,步长)
# 长度
# 切分split,split,rsplit
# 除两边空白strip,lstrip,rstrip
# 成员运算in not in
# for循环
# lstrip/rstrip:左/右除空白
# rsplit:从右开始切
# upper/lower:大写/小写
# startstwith/endswith:以某开头/以某结尾
# join:连接列表为字符串
# replace:替换字符
# isdigit:判断是否为数字
# find/rfind/index/rindex/count:查找/从右开始查找/索引结果/从右开始索引结果/计数
# center/ljust/rjust/zfill:居中填充/居左填充/居右填充/填充0
# expantabs:扩展tab键
# capitalize/swapcase/title:大写/大小写转换/首字母大写
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#strip
name='*egon**'
print(name.strip('*'))
print(name.lstrip('*'))
print(name.rstrip('*'))
#lower,upper
name='egon'
print(name.lower())
print(name.upper())
#startswith,endswith
name='alex_SB'
print(name.endswith('SB'))
print(name.startswith('alex'))
#format的三种玩法
res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
#split
name='root:x:0:0::/root:/bin/bash'
print(name.split(':')) #默认分隔符为空格
name='C:/a/b/c/d.txt' #只想拿到顶级目录
print(name.split('/',1))
name='a|b|c'
print(name.rsplit('|',1)) #从右开始切分
#join
tag=' '
print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串
#replace
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1))
#isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
age=input('>>: ')
print(age.isdigit())
#find,rfind,index,rindex,count
name='egon say hello'
print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index('e',2,4)) #同上,但是找不到会报错
print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有
#center,ljust,rjust,zfill
name='egon'
print(name.center(30,'-'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(50)) #用0填充
#expandtabs
name='egon\thello'
print(name)
print(name.expandtabs(1))
#captalize,swapcase,title
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='egon say hi'
print(msg.title()) #每个单词的首字母大写
#is数字系列
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False
#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False
#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True
#三者不能判断浮点数
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
'''
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric
'''
列表类型
列表(list):用于存储多个值
定义:[ ] 内存放任意类型数据,用逗号分隔
列表内置方法:
# 索引取值(即可取又可改)
# 切片
# 长度
# append
# 成员运算
# for循环
# count:元素个数计数
# remove:移除元素
# reverse:反转列表
# pop:删除元素
# insert:插入元素
# sort:列表排序
# index:索引元素
# del:删除元素
# extend:扩展列表
# clear:清除列表
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#反向步长
l=[1,2,3,4,5,6]
#正向步长
l[0:3:1] #[1, 2, 3]
#反向步长
l[2::-1] #[3, 2, 1]
#列表翻转
l[::-1] #[6, 5, 4, 3, 2, 1]
l = [1,2,3]
#索引取值
print(l[0]) #1
l[0] = 11111
print(l) #[11111, 2, 3]
#切片
print(l[::2]) #[11111, 3]
#长度
print(len(l)) #3
#append
print(l.append(555))
# for
for i in l:
print(i)
#11111
# 2
# 3
# 555
字典类型
字典(dict):用于存储键值对
定义:{key:value }多个值用逗号分隔
字典内置方法:
# 按键取值
# 长度
# keys/values/items
# for循环
# 成员运算
# pop:删除元素
# fromkeys:由一个列表生成一个字典,默认值为None
# setdefault:有指定key不会改变值;无指定key则改变值
# get:通过key获取value,无key默认获取None
# update:扩展字典
# del:删除字典键值对
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
字典的表示方法:
info_dic={'name':'haiyna','age':18,'sex':'female'}
#
1.存/取
info_dic={'name':'egon','age':18,'sex':'male'}
print(info_dic['name11111111'])#找不到则报错了
print(info_dic.get('name',None))
print(info_dic.get('name222222',None))#get方法找不到不报错,可以自己设定默认值
#pop:key存在则弹出值,不存在则返回默认值,如果没有默认值则报错
# print(info_dic.pop('nam123123123123123123e',None))
# print(info_dic)
# print(info_dic.popitem())
# print(info_dic)
# info_dic['level']=10
# print(info_dic)
#
# 删除
info_dic={'name':'egon','age':18,'sex':'male'}
# info_dic.pop()
# info_dic.popitem()
# del info_dic['name']
#
# 键s,值s,键值对
info_dic={'name':'egon','age':18,'sex':'male'}
# print(info_dic.keys())
# print(info_dic.values())
# print(info_dic.items())
# for k in info_dic:
# # print(k,info_dic[k])
# print(k)
# print('========>')
# for k in info_dic.keys():
# print(k)
# for val in info_dic.values():
# print(val)
# for k,v in info_dic.items(): #k,v=('name', 'egon')
# print(k,v)
# 长度
# info_dic={'name':'egon','age':18,'sex':'male'}
# print(len(info_dic))
#
# 循环
#
# 包含in
# info_dic={'name':'egon','age':18,'sex':'male'}
# print('name' in info_dic)
# print('name' in info_dic.keys())
# print('egon' in info_dic.values())
# print(('name','egon') in info_dic.items())
info_dic={'name':'egon','age':18,'sex':'male'}
# info_dic.update({'a':1,'name':'Egon'})
# print(info_dic)
# info_dic['hobbies']=[]
# info_dic['hobbies'].append('study')
# info_dic['hobbies'].append('read')
# print(info_dic)
#setdefault:key不存在则设置默认值,并且放回值默认值
#key存在则不设置默认,并且返回已经有的值
# info_dic.setdefault('hobbies',[1,2])
# print(info_dic)
# info_dic.setdefault('hobbies',[1,2,3,4,5])
# print(info_dic)
# info_dic={'name':'haiyan','age':18,'sex':'male'}
# {'name':'egon','age':18,'sex':'male','hobbies':['study']}
# info_dic.setdefault('hobbies',[]).append('study')
# {'name':'egon','age':18,'sex':'male','hobbies':['study','read']}
# info_dic.setdefault('hobbies',[]).append('read')
# {'name':'egon','age':18,'sex':'male','hobbies':['study','read','sleep']}
# info_dic.setdefault('hobbies',[]).append('sleep')
# l=info_dic.setdefault('hobbies',[])
# print(l,id(l))
# print(id(info_dic['hobbies']))
# print(info_dic)
# d=info_dic.copy()
# print(d)
# info_dic.clear()
# print(info_dic)
# d=info_dic.fromkeys(('name','age','sex'),None)
# print(d)
# d1=dict.fromkeys(('name','age','sex'),None)
# d2=dict.fromkeys(('name','age','sex'),('egon',18,'male'))
# print(d1)
# print(d2)
# info=dict(name='haiyan',age=18,sex='male')
# print(info)
# info=dict([('name','haiyan'),('age',18)])
# print(info)
元组类型
元组(tuple):用于存储多个值
定义:()多个值用逗号分隔
元组内置方法:
# 索引取值(无法更改)
# 切片
# 长度
# 成员运算
# for循环
# count:元素个数计数
# index:元素位置索引
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 切片
# goods=('iphone','lenovo','sanxing','suoyi')
# print(goods[1:3])
# 长度
#in:
#字符串:子字符串
#列表:元素
#元组:元素
#字典:key
# goods=('iphone','lenovo','sanxing','suoyi')
# print('iphone' in goods)看的是里面的元素在不在里面
# d={'a':1,'b':2,'c':3}
# print('b' in d) 看的是key在不在d里面
#掌握
# goods=('iphone','lenovo','sanxing','suoyi')
# print(goods.index('iphone'))
# print(goods.count('iphone'))
#补充:元组本身是不可变的,但是内部的元素可以是可变类型
t=(1,['a','b'],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2)))
# t[1][0]='A'
# print(t)
# t[1]='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
集合类型
集合(set):用于存储多个值
定义:{ }多个值用逗号分隔
集合内置方法:
# 去重
# 并集 |
# 交集 &
# 差集 -
# 对称差集 ^
# 父集 > >=
# 子集 <&emsp;<=
# ==
# add:添加元素
# difference_update:更新该集合没有的元素
# isdisjoint:如果两个元素交集为空返回True,否则返回False
# remove:移除元素 # 值不存在会报错
# discard :移除元素 # 不会报错
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
linuxs={'six','wu','dabao'}
linuxs.add('xiaoxiao')#说明set类型的集合是可变类型
linuxs.add([1,2,3])#报错,只能添加不可变类型
print(linuxs)
linuxs={'six','wu','dabao'}
res=linuxs.pop() #不用指定参数,随机删除,并且会有返回值
print(res)
res=linuxs.remove('wupeiqi')#指定元素删除,元素不存在则报错,单纯的删除,没有返回值,
print(res)
res=linuxs.discard('egon1111111111') #指定元素删除,元素不存在不报错,单纯的删除,没有返回值,
linuxs={'wupeiqi','egon','susan','hiayan'}
new_set={'xxx','fenxixi'}
linuxs.update(new_set)
print(linuxs)
linuxs.copy()
linuxs.clear()
#解压
a,*_={'zzz','sss','xxxx','cccc','vvv','qqq'}
print(a)
布尔类型
作用:一般用于判断,除了0/None/空/False自带布尔值为False,其他的数据类型自带布尔值为True
数据类型总结
按存储空间的占用分(从低到高)
数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
按存值个数区分
标量/原子类型 | 数字,字符串 |
容器类型 | 列表,元组,字典 |
按可变不可变区分
可变 | 列表,字典 |
不可变 | 数字,字符串,元组 |
按访问顺序区分
直接访问 | 数字 |
顺序访问(序列类型) | 字符串,列表,元组 |
key值访问(映射类型) | 字典 |