变量与数据类型

变量

  变量:可变的量,变量用于存储事物的状态

变量命名规范

  1. 变量名的组成由数字,字母,下划线组成
  2. 数字不能开头
  3. 变量名不能与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:大写/大小写转换/首字母大写
#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:清除列表
#反向步长
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:删除字典键值对
字典的表示方法:

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:元素位置索引
#     切片
# 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 :移除元素 # 不会报错
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值访问(映射类型) 字典

 

 

 

 

 

思维导图(点击链接

 

posted @ 2020-05-27 22:33  mini猪猪侠  阅读(217)  评论(0编辑  收藏  举报