# 第二讲:p5-
# 字符类型str
# res =str('大海')
# ses1 ='戴红'
# print(res)
# print(ses1)
# msg ='hello word' #字符串不能通过索引修改
# # print(msg[0])
# # print(msg[-1])
# #切片
# print(msg[0:4])#切片实现索引,顾头不顾尾,默认步长为1,
# print(msg[0:4:2])#切片实现索引,顾头不顾尾,默认步长为1,此时步长为2
# print(msg[:])#切片实现索引,顾头不顾尾,默认步长为1,
# print(msg[::-1])#切片实现索引,顾头不顾尾,默认步长为1,反着写
# # 计算长度函数len
# print(len(msg))
# #返回布尔类型 :in 或者not in判断是否存在,返回值为True或者False
# print('dahai' in 'dahai is dsb')
# print('dahai' not in 'dahai is dsb')
# # format() 表示所在位置的内容
# print('my name is {}'.format('dahai'))
# print('my name is {1}, my age is {0}'.format(18,'dahai'))
# print('my name is {name}, my age is {age}'.format(age =18,name ='dahai'))
# # join: 拼接,把其他字符串补充到其它字符串中
# str1 ='1'
# str2 ='樊玉和'
# str3 ='郑灿星'
# print(''.join([str1,str2,str3]))#连接时无任何符号
# print(' '.join([str1,str2,str3]))#连接时有空格
# print(','.join([str1,str2,str3]))#连接时有逗号
# #删除
# name ='dahai'
# del name
# print(name)
# # lower,upper:表示字符串变小写或者大写
# a ='abc'
# b =a.upper()#字符串字母变成大写
# c ='DEF'
# d =c.lower()#字符串字母变成小写
# print('a =%s,b =%s,c =%s,d =%s'%(a,b,c,d))
#把字符串里面的首字母变成大写:capitalize();
#把字符串里面的每个首字母变成大写:title();
# 把字符串切成列表 split 默认空格字符切分
# a ='abc word'
# print(a.capitalize())
# print(a.title())
# mess ='hello word python'
# mess_2=mess.split()
# print(mess_2)
#
# mess_1 ='hello*word*python'
# mess_2_2 = mess_1.split('*')
# print(mess_2_2)
#
# mesee ='root:123456'
# mess_0 =mesee[5:11]
# print(mess_0)
# mess_0_0 =mesee.split(':')#按照:切分
# print(mess_0_0[1])#从切分后的第一个元素显示
# # strip:跳过字符串前面空格
# user =' da hai '
# print(user.strip())
#
# name =input('请输入用户名:').strip()
# print('dahai' ==name)
# # center,ljust,rjust :多余添加自己想要的字符
# print('dahai'.center(10,'*'))#两侧多余部分填充*
# print('dahai'.ljust(10,'*'))#将dahai往左侧靠,*填充到后面
# print('dahai'.rjust(10,'*'))#将dahai往右侧靠,*填充到前面
# 查询:find、 rfind、index、rindex
#查找子字符串在大字符串的那个位置(起始索引)
# msg ='hello dahai is dsb'
# print(msg.find('dahai'))#在大字符串的6号索引
# print(msg.find('dahai',0,3))#索引从0到3,未找到返回-1
# print(msg.index('dahai',0,3))#索引从0到3,未找到报错
# msg1 ='dahai第二个dahai'
# print(msg1.find('dahai'))#从左往右查找
# print(msg1.rfind('dahai'))#从右往左找
#
# # count:统计一个子字符在大字符串里面出现的次数
# print(msg1.count('dahai'))
#
# # isdigit:判断字符串里面的数据是不是数字; isalpha:判断字符串里面是否含有字母
# num ='1818'
# print(num.isdigit())
# letter ='abc'
# print(letter.isalnum())
# #比较两个字符串开头元素是否相同:startswit
# #比较两个字符串结尾的元素是否相同:endswith
# maga ='dahai is dsb'
# print(maga.startswith('dahai'))
# print(maga.endswith('sb'))
#
# # islower:判断字符串中的值是否全是小写
# # isupper:判断字符串中的数值是否全是大写
# a ='abc'
# print(a.isupper())
# #转义字符:n:换行; t:空出4个空格
# print('hello npython')
# print('hello t python')
# # 数字类型的操作
# a =1.2 #浮点类型
# print(int(a))
#
# # 赋值运算:
# # 普通赋值 =;加法赋值 +=;减法赋值 -=;乘法赋值 *=;除法赋值:/=; 取余赋值:%=;乘方赋值:**=;地板除赋值://=
# n =2
# n += 1
# print(n)
# # 布尔类型转换
# tag =True
# print(type(tag))
# 所有的数据类型都自带布尔值
# 1.None,0,空(空字符串,空列表,空字典)三种情况下的布尔值为False
# 2.其余均为真
# tag1 =None
# if tag1:
# print('数据类型自带True')
# else:
# print('数据类型自带False')
# tag1 = {}
# if tag1:
# print('数据类型自带True')
# else:
# print('数据类型自带False')
#
# # 列表的操作,列表内容可以修改
# L =['大海',1,1.2,[5,'小海']]
# print(L)
# L[0] ='红海'
# print(L)
# print(L[0:3]) #顾头不顾尾,默认步长为1
# print(L[0:4:2]) #顾头不顾尾,设置步长为2
# print(len(L))# 显示列表长度
# print('红海'in L)#查看红海是否在列表中,如果在显示True,如果不在,则显示False
# print('红海'not in L)# 查看红海是否在列表中,如果不在列表中,显示True,如果在列表中,则显示False
# print(L.count('红海'))#查看在列表中红海字符的个数
# print(L.index('红海'))#查看红海在哪个房间
#
#
# # append(元素) 往列表末尾中添加元素
# L.append('蓝海')
# print(L)
# L.append('蓝海')
# print(L)
# # insert(索引,元素) 往指定索引位置前面插入一个元素
# L =['大海',1,1.2,[5,'小海']]
# L.insert(0,'黄海')#在L列表0索引位置前面中插入‘黄海’
# L.insert(0,'heihai')#在L列表0索引位置中插入‘heihai’
# print(L)
# # extend:往列表末端位置中插入多个元素
# L =['大海',1,1.2,[5,'小海']]
# L.extend(['绿海','紫海'])
# print(L)
# # 删除 del
# L =['大海',1,1.2,[5,'小海']]
# del L[1] #删除L列表中第1个位置元素
# print(L)
# # 指定删除remove
# L =['大海',1,1.2,[5,'小海']]
# L.remove(1.2)
# print(L)
# # pop 从列表里面拿走一个值
# L =['大海',1,1.2,[5,'小海']]
# # L.pop()#默认从最后一个拿走
# # L.pop(0)#从列表第0位置拿走
# res =L.pop(0)#从列表第0位置拿走的数值赋值给新变量res
# print(L)
# print(res)
# # 清空列表:clear
# L =['大海',1,1.2,[5,'小海']]
# L.clear()
# print(L)
# #反序:将列表倒过来
# L =['大海',1,1.2,[5,'小海']]
# print(L)
# L.reverse()
# print(L)
# # sort 对数字排序
# list_num =[1,2,5,2,7]
# list_num.sort(reverse=True)#将数字按照从大到小排列
# print(list_num)
# list_num.sort(reverse=False)#将数字按照从小到达排列
# print(list_num)
#
# # 元组:tuple,元组的内容不能通过索引修改,但是元组内部的列表可以修改
# t =(1,2,'大海',(2,2),[1,2,3])
# t[4][1] =8 #将元组中的列表第二个数值2改为8
# print(t)
#
# #将元组改为列表形式
# t1 =list(t)#将元组改为列表形式
# print(t1)
# t1[0] =8 #修改列表任意位置的内容
# t2 =tuple(t1)#再将列表转换为元组
# print(t2)
# 字典 dict;列表与字典的区别在于:列表依靠索引,字典依靠键值对
# 第一种方式:
# infol ={(1,2,3):'黑海'}
# print(infol[(1,2,3)])
#
# # 第二种方式:
# dic =dict(x=1,y =2)
# print(dic)
# #字典的加操作:
# infol ={(1,2,3):'黑海'}
# infol['addr'] ='长沙'
# print(infol)
# print(len(infol))
#
#
# # 成员运算in 和not in: 字典的成员运算判断的是key 返回值是布尔类型
# print('addr' in infol)
# print('长沙' in infol)
# # 删除字典
# infol.clear() #清空字典
# print(infol)
# # 通用 del
# del infol['addr']
# print(infol)
# # pop 删除 返回值是value 实际上是拿走了字典的value
# res =infol.pop('addr')
# print(infol)#显示拿走元素之后的字典
# print(res)#显示拿走的元素
# # popitem 最后一对键值对删除 ,字典无序,返回的是一个元组
# res1 =infol.popitem()
# print('字典剩余的内容:',infol)
# print('从字典中删除的内容为元组:',res1)
# # 字典的修改操作
# info ={'name':'大海','age':18,'addr':'长沙'}
# info['name'] ='红海' #将name的索引值大海修改为红海
# print(info)
# info ={'name':'大海','age':18,'addr':'长沙'}
# info.update({'name':'小海'})#将name索引对应的索引值大海改为小海
# print(info)
# # setdefault:有则不动/返回原值,无则添加/返回新值
# info ={'name':'大海','age':18,'addr':'长沙'}
# res =info.setdefault('name','xxx')
# print(res)
# print(info)
# res2 =info.setdefault('姓名','樊玉和')
# print(info)
# print(res2)
#
# # 查
# info ={'name':'大海','age':18,'addr':'长沙'}
# print(info['name'])# 查询不存在的key会报错
# 第二讲:p5-
# 字符类型str
# res =str('大海')
# ses1 ='戴红'
# print(res)
# print(ses1)
# msg ='hello word' #字符串不能通过索引修改
# # print(msg[0])
# # print(msg[-1])
# #切片
# print(msg[0:4])#切片实现索引,顾头不顾尾,默认步长为1,
# print(msg[0:4:2])#切片实现索引,顾头不顾尾,默认步长为1,此时步长为2
# print(msg[:])#切片实现索引,顾头不顾尾,默认步长为1,
# print(msg[::-1])#切片实现索引,顾头不顾尾,默认步长为1,反着写
# # 计算长度函数len
# print(len(msg))
# #返回布尔类型 :in 或者not in判断是否存在,返回值为True或者False
# print('dahai' in 'dahai is dsb')
# print('dahai' not in 'dahai is dsb')
# # format() 表示所在位置的内容
# print('my name is {}'.format('dahai'))
# print('my name is {1}, my age is {0}'.format(18,'dahai'))
# print('my name is {name}, my age is {age}'.format(age =18,name ='dahai'))
# # join: 拼接,把其他字符串补充到其它字符串中
# str1 ='1'
# str2 ='樊玉和'
# str3 ='郑灿星'
# print(''.join([str1,str2,str3]))#连接时无任何符号
# print(' '.join([str1,str2,str3]))#连接时有空格
# print(','.join([str1,str2,str3]))#连接时有逗号
# #删除
# name ='dahai'
# del name
# print(name)
# # lower,upper:表示字符串变小写或者大写
# a ='abc'
# b =a.upper()#字符串字母变成大写
# c ='DEF'
# d =c.lower()#字符串字母变成小写
# print('a =%s,b =%s,c =%s,d =%s'%(a,b,c,d))
#把字符串里面的首字母变成大写:capitalize();
#把字符串里面的每个首字母变成大写:title();
# 把字符串切成列表 split 默认空格字符切分
# a ='abc word'
# print(a.capitalize())
# print(a.title())
# mess ='hello word python'
# mess_2=mess.split()
# print(mess_2)
#
# mess_1 ='hello*word*python'
# mess_2_2 = mess_1.split('*')
# print(mess_2_2)
#
# mesee ='root:123456'
# mess_0 =mesee[5:11]
# print(mess_0)
# mess_0_0 =mesee.split(':')#按照:切分
# print(mess_0_0[1])#从切分后的第一个元素显示
# # strip:跳过字符串前面空格
# user =' da hai '
# print(user.strip())
#
# name =input('请输入用户名:').strip()
# print('dahai' ==name)
# # center,ljust,rjust :多余添加自己想要的字符
# print('dahai'.center(10,'*'))#两侧多余部分填充*
# print('dahai'.ljust(10,'*'))#将dahai往左侧靠,*填充到后面
# print('dahai'.rjust(10,'*'))#将dahai往右侧靠,*填充到前面
# 查询:find、 rfind、index、rindex
#查找子字符串在大字符串的那个位置(起始索引)
# msg ='hello dahai is dsb'
# print(msg.find('dahai'))#在大字符串的6号索引
# print(msg.find('dahai',0,3))#索引从0到3,未找到返回-1
# print(msg.index('dahai',0,3))#索引从0到3,未找到报错
# msg1 ='dahai第二个dahai'
# print(msg1.find('dahai'))#从左往右查找
# print(msg1.rfind('dahai'))#从右往左找
#
# # count:统计一个子字符在大字符串里面出现的次数
# print(msg1.count('dahai'))
#
# # isdigit:判断字符串里面的数据是不是数字; isalpha:判断字符串里面是否含有字母
# num ='1818'
# print(num.isdigit())
# letter ='abc'
# print(letter.isalnum())
# #比较两个字符串开头元素是否相同:startswit
# #比较两个字符串结尾的元素是否相同:endswith
# maga ='dahai is dsb'
# print(maga.startswith('dahai'))
# print(maga.endswith('sb'))
#
# # islower:判断字符串中的值是否全是小写
# # isupper:判断字符串中的数值是否全是大写
# a ='abc'
# print(a.isupper())
# #转义字符:n:换行; t:空出4个空格
# print('hello npython')
# print('hello t python')
# # 数字类型的操作
# a =1.2 #浮点类型
# print(int(a))
#
# # 赋值运算:
# # 普通赋值 =;加法赋值 +=;减法赋值 -=;乘法赋值 *=;除法赋值:/=; 取余赋值:%=;乘方赋值:**=;地板除赋值://=
# n =2
# n += 1
# print(n)
# # 布尔类型转换
# tag =True
# print(type(tag))
# 所有的数据类型都自带布尔值
# 1.None,0,空(空字符串,空列表,空字典)三种情况下的布尔值为False
# 2.其余均为真
# tag1 =None
# if tag1:
# print('数据类型自带True')
# else:
# print('数据类型自带False')
# tag1 = {}
# if tag1:
# print('数据类型自带True')
# else:
# print('数据类型自带False')
#
# # 列表的操作,列表内容可以修改
# L =['大海',1,1.2,[5,'小海']]
# print(L)
# L[0] ='红海'
# print(L)
# print(L[0:3]) #顾头不顾尾,默认步长为1
# print(L[0:4:2]) #顾头不顾尾,设置步长为2
# print(len(L))# 显示列表长度
# print('红海'in L)#查看红海是否在列表中,如果在显示True,如果不在,则显示False
# print('红海'not in L)# 查看红海是否在列表中,如果不在列表中,显示True,如果在列表中,则显示False
# print(L.count('红海'))#查看在列表中红海字符的个数
# print(L.index('红海'))#查看红海在哪个房间
#
#
# # append(元素) 往列表末尾中添加元素
# L.append('蓝海')
# print(L)
# L.append('蓝海')
# print(L)
# # insert(索引,元素) 往指定索引位置前面插入一个元素
# L =['大海',1,1.2,[5,'小海']]
# L.insert(0,'黄海')#在L列表0索引位置前面中插入‘黄海’
# L.insert(0,'heihai')#在L列表0索引位置中插入‘heihai’
# print(L)
# # extend:往列表末端位置中插入多个元素
# L =['大海',1,1.2,[5,'小海']]
# L.extend(['绿海','紫海'])
# print(L)
# # 删除 del
# L =['大海',1,1.2,[5,'小海']]
# del L[1] #删除L列表中第1个位置元素
# print(L)
# # 指定删除remove
# L =['大海',1,1.2,[5,'小海']]
# L.remove(1.2)
# print(L)
# # pop 从列表里面拿走一个值
# L =['大海',1,1.2,[5,'小海']]
# # L.pop()#默认从最后一个拿走
# # L.pop(0)#从列表第0位置拿走
# res =L.pop(0)#从列表第0位置拿走的数值赋值给新变量res
# print(L)
# print(res)
# # 清空列表:clear
# L =['大海',1,1.2,[5,'小海']]
# L.clear()
# print(L)
# #反序:将列表倒过来
# L =['大海',1,1.2,[5,'小海']]
# print(L)
# L.reverse()
# print(L)
# # sort 对数字排序
# list_num =[1,2,5,2,7]
# list_num.sort(reverse=True)#将数字按照从大到小排列
# print(list_num)
# list_num.sort(reverse=False)#将数字按照从小到达排列
# print(list_num)
#
# # 元组:tuple,元组的内容不能通过索引修改,但是元组内部的列表可以修改
# t =(1,2,'大海',(2,2),[1,2,3])
# t[4][1] =8 #将元组中的列表第二个数值2改为8
# print(t)
#
# #将元组改为列表形式
# t1 =list(t)#将元组改为列表形式
# print(t1)
# t1[0] =8 #修改列表任意位置的内容
# t2 =tuple(t1)#再将列表转换为元组
# print(t2)
# 字典 dict;列表与字典的区别在于:列表依靠索引,字典依靠键值对
# 第一种方式:
# infol ={(1,2,3):'黑海'}
# print(infol[(1,2,3)])
#
# # 第二种方式:
# dic =dict(x=1,y =2)
# print(dic)
# #字典的加操作:
# infol ={(1,2,3):'黑海'}
# infol['addr'] ='长沙'
# print(infol)
# print(len(infol))
#
#
# # 成员运算in 和not in: 字典的成员运算判断的是key 返回值是布尔类型
# print('addr' in infol)
# print('长沙' in infol)
# # 删除字典
# infol.clear() #清空字典
# print(infol)
# # 通用 del
# del infol['addr']
# print(infol)
# # pop 删除 返回值是value 实际上是拿走了字典的value
# res =infol.pop('addr')
# print(infol)#显示拿走元素之后的字典
# print(res)#显示拿走的元素
# # popitem 最后一对键值对删除 ,字典无序,返回的是一个元组
# res1 =infol.popitem()
# print('字典剩余的内容:',infol)
# print('从字典中删除的内容为元组:',res1)
# # 字典的修改操作
# info ={'name':'大海','age':18,'addr':'长沙'}
# info['name'] ='红海' #将name的索引值大海修改为红海
# print(info)
# info ={'name':'大海','age':18,'addr':'长沙'}
# info.update({'name':'小海'})#将name索引对应的索引值大海改为小海
# print(info)
# # setdefault:有则不动/返回原值,无则添加/返回新值
# info ={'name':'大海','age':18,'addr':'长沙'}
# res =info.setdefault('name','xxx')
# print(res)
# print(info)
# res2 =info.setdefault('姓名','樊玉和')
# print(info)
# print(res2)
#
# # 查
# info ={'name':'大海','age':18,'addr':'长沙'}
# print(info['name'])# 查询不存在的key会报错
#
# print(info.get('name'))
# print(info.get('xxxxx'))# 这种方法查询不到不会报错,会显示None
#
# # 取出所有的key
# res1 =info.keys()
# print(res1)#显示字典中所有的key
# print(list(res1)) #将字典中的所有的key放入列表中
#
# # 取出所有的值
# res2 =info.values()
# print(res2)
# print(list(res2))
#
# #取出所有的键值对
# res3 =info.items()
# print(res3)
#
# # 集合:集合中的每一个值必须是不可变性
# # add
# s ={1,2.2,'大海'}
# s.add('小海')
# print(s)
#
# # 删除 pop
# s.pop()
# print(s)
#
# # 集合中的指定删除 remove
# s.remove('大海')
# print(s)
#
# # 集合修改(添加):update
# s.update(['蓝海','樊玉和'])
# print(s)
#
# # 集合去重set
# names =['dahai','xiaohai','dahai','lanhai','lanhai']
# s =set(names)
# print(s)
# 总结:
# 字符串,数字,布尔,复数 都是一个值,改变需要重新赋值,都是不可变类型
# 容器元组是不可变类型,字典、列表、集合都是可变类型