##字符串所有的修改方法都不会改变原字符串只会返回一个新的字符串
# 不会改变原字符串 可以用变量接收就接收了
##st = 'this is python'
##print(st.replace('t','T')) #replace 替换 #可替换原字符串中的字符,但是并不会修改原字符
##print(st.replace('this','THIS')) #把this替换成THIS
##print(st.replace(' is', '')) #把is替换成没有(删除is)
##print(st.replace('t','T',1)) #1代表修改一次(替换1次) #,只是会返回一个新的对象
##print('adqwqeqdawqaaa'.replace('a','A',2))
##st1 = st.replace('t','T',1)
##print(st1)
##print(st.upper ()) ## upper() 全变成大写
##print(st.lower ()) ## lower() 全转成小写
##print(st.capitalize ()) #capitaliza()首字母大写
##print(st.title()) ## title单词首字母大写,(每一个单词首字母都大写)
##print(st.strip()) ## strip 去掉两边空格
##st2 = ' hello world '
##print(st2.strip ())
##print(st2.lstrip ()) ##去除左边空格
##print(st2.rstrip()) ##去除右边空格
#字符串切割(用列表接收) split可以指定切割字符或分隔符还可以指定切割次数
##print(st.split(' ')) ##split(这里是用空格切割)
##print(st.split( ' ',1)) ##切割一次
##print('---'.join(st.split(' '))) ##与下面方法一样
##print(st.replace(' ','---'))
##print(st.find('p')) #find寻找p这个下标索引值
##print(st.find('w'))##(用这个查找一个不存在元素不会报错返回-1) find
##print(st.index('p')) ##用这个查找不存在会报错 index
##print(st.find('i',3)) ##查找下标为3后面的i
##print(st.find('i',6)) ##打印出来为-1表示后面没有了
##print(st.isalpha()) ##isalpha判断全部是不是字母(返回是bool值True or False)
print('123'.isdigit()) ##isdigit判断全部是否为数字 只能传字符串
##print('abdew'.islower()) ##islower判断字母是否为小写(全部)
##print('iASDcdw'.isupper()) ##isupper判断字母是否为大写(全部)
##防止字符串转义 r
##print('yuo\'r') ##打印出yuo'r
##print('adasd\adw') ##\a系统提示音
##字典{} 键值对 dict 键唯一 值可以重复 (无序的)
dic = {'name':'xw','age':20,'sex':'man'} ##不可以用下标取值
dic['name'] = 'xh' #修改值
dic['hh'] = 'ert' #增加键值对
##dic1 = dict(a=1,b=2)
#增删改查
##print(dic['name']) ##获取一个不存在值报错
##print(dic.get('xb','未找到')) #获取不存在的值不会报错
#get 获取值 set修改 赋值
##print(dic.setdefault ('habby','xh'))
##setdefault (查询) 当键存在返回值 当键不存在则添加键值对
dic.update({'a':120,'b':340,'c':30,'name':'xh','age':30})
#update 有则改,无则增 可以更新key的值,如果不存在则添加键值对。
dic.keys() #得到所有的键 可转列表去操作
dic.values() ##得到所有的值 可转列表去操作
dic.items() ##得到所有的键值对 可转列表去操作
dic.pop('a') ##删除a这个键和值 可转列表去操作 指定删除key
dic.popitem() ##默认删除最后一个 可转列表去操作]
#集合{} 值唯一 无序 set (没有下标)
##se = set() #定义一个空集合
##se1 = {1,2,4,5,7,3}
##se2 = {1,3,5,6,8,9}
##se3 = se1&se2 #&交集
##se4 = se1|se2 ## | 并集
##se5 =se1 -se2 ##差集 用-号表示 以前面的为主
#增删
##se1.add(6) #add添加单个
##se1.add('aca')
##se1.pop() ##pop默认从前面删除
##se1.remove('aca') ##remove 根据元素指定删除
##se1.update({1,3,5,6,7,8,0,5,4,'a','b','f'}) ##update 添加多个
#集合判断
##se3 = {3,4,9}
##se_1 = {2,5,7,6,4}
##se_2 = {2,6,4}
##print(se_1.isdisjoint(se3)) #isdisjoint 判断两个集合有没有交集 没有True 有 False
##print(se_1.isdisjoint(se_2))
##print(se_1.issubset(se_2)) #issubset 判段集合1是否被包含于集合2 包含True 不包含False
##print(se_2.issubset(se_1))
##print(se3.issubset(se_2))
##print(se_1.issuperset(se_2)) #issuperset 判断前面集合是否包含于后面集合不包含返回False
#运算符
##n+=1 表示n=n+1
##n-=1 表示n=n-1
#身份运算符(存储的地址)is (在-5到256之间内存地址位置一样,其他不一样)
# is not is 比较的是地址值
##a = 400
##b = 400
##print(a is b)
#成员运算符 in not in 校验元素是否在集合里
print(1 in (1,2,3,4))
print(1 not in (1,2,3,4))
##可变对象 :list dict set
##不可变对象 :数值 str元组