#20200927 第十节课
#对象的方法,方法其实就是一种函数,只是方法是放在类当中的
# str1='fasdg' #str.出来的那些就是方法
# #方法一:str.isdigit() #判断某个字符串是否是由纯数字组成 注意是字符串 eg:
# str2=123123123
# str3='-1' #注意这个判断是否是纯数字也是False,因为符号不识别
# #print(str1.isdigit()) #打印结果得False
# # print(str2.isdigit()) #打印会报错,因为str2不是字符串
# 方法二:isalpha() #判断某个字符串是否是纯字母
# print(str1.isalpha()) #True
#方法三:strip() #去掉字符串前后的特定字符,缺省值是去掉空格 eg:
# stra=' f f f fe e '
# print(stra.strip()) #只去掉字符串前后的空格
# strs='!!njew jiew gbs!!!'
# print(strs.strip('!')) #也可以去掉字符串前后的任意字符,只要把缺省值空格改成要去掉的东西就好了
# 思考:怎么去掉一个字符串的全部相同的某个东西?用replace() eg:
# staaa='***f*r**e*e**g*h*j*'
# print(id(staaa))
# print(id(staaa.replace('**',''))) #不是只替换一个,而是全部你都替换
#打印得:*f*re*eg*h*j*,把要去掉的东西改成,替换成 replace('旧值',‘新值’)
# staaa='*$$*&&*f*r**e*e**g*h*j*'
# print(staaa.replace('*',' ').replace('$','1').replace('&','2'))
#还可以多个replace一起用,因为replace返回的是字符串,而字符串就可以用replace方法
# startswith,判断是否以某些字符开头,endswith,判断是否以某些字符结束
# 思考题:判断用户输入的某个身份证是否是重庆的身份证,如果是就打印是的,不是就打印不是的
# sfz=input('请输入你的身份证:')
# if len(str(sfz!=18)):
# print ("请输入您的18位身份证号码")
# else:
# print('是')
# if sfz[:16].isdigit():
# print ("请输入纯数字")
# else:
# print('是的')
# if sfz.startswith('5'):
# print('重庆人')
# else:
# print('不是的') #瞎想的程序,不成熟,有空再完善
#思考题:判断某个身份证是否是重庆的身份证,如果是就打印是的,不是就打印不是的
# sfz='500388199906066666'
# if sfz.startswith('5'):
# print('是的')
# else:
# print('不是的')
#判断一个身份证的主人的性别,身份证倒数第二位是基数则为男,偶数即为女
#:方法:split(参数),以参数为分隔符对字符串进行切割,切割之后的返回值是一个列表,切割符不会消失。eg:
# sta='hdhudijdgkodhg'
# #print(sta.split('d')) #得:['h', 'hu', 'ij', 'gko', 'hg'],返回的是列表
# # print(sta.split('g')) #得:['hdhudijd', 'kodh', ''],如果是以首未字符作为切割符进行切割,则会出现空字符
# print(sta.split('h')) #得:['', 'd', 'udijdgkod', 'g']
#join()方法,拼接字符串
查='aaa'
#print(查.join('fffff')) #得到faaafaaafaaafaaaf 是把查看成一个整体插入了fffff中间
print(查.join(['e','r','t'])) #得:eaaaraaat
新田老师的课程笔记详:
#20200927 第十节课:对象的方法
# 课程大纲:
'''
1- 字符串的方法 (本节课重点)
2- 列表的方法
3- 查看python手册
'''
# 对象的方法的概念:
# **在python中一切类型的数据都是对象:数据和方法
# **对象的数据:
# *对象所对应的储存的东西,是静态的部分
# *比如: a='sd123456'
# **对象的方法:
# *可以看做对象的行为,是动态的部分
# *对象的方法其实就是属于该对象的函数
# 1- 字符串的方法 *本节课重点
# 1*count()方法:计算字符串中包含的多少个指定的字符串:eg:
# print('123123 789'.count('123')) #打印得:2,说明有两个123
# 2*endswith()函数:检查字符串是否已指定的字符串结尾
# print('lalal'.endswith('al')) #打印得True
# 3*startwith()函数:检查字符串是否以指定的字符串开头
# print('六友是沙比'.startswith('六友')) #打印得True
# 4*find()方法:返回指定的子字符串在字符串中出现的位置(下标) eg:
# str='我和我的祖国,我们一刻也不能分割'
# 如果子符串中没有指定的子字符串,返回-1:
# -注意:find()与index()求下标函数的区别,index()是一定要有这个元素才行:
# print(str.find('已')) #没有指定的子字符串,返回-1:
# print(str.index('已')) #如果字符串中没有这个元素,是会报错的
# 如果子字符串中包含多个指定字符串,返回第一个值的位置,0:
# print(str.find('我'))
# 如果子字符串中包含多个元素以上,返回第一个元素所在位置,2:
# print(str.find('我的'))
# 还可以指定位置查找,及有多个相同元素的时候,越过该元素下标找后面的元素的下标
# print(str.find('我',3))#表示从第3位之后开始找'我'这个字,打印得:7
# 针对指定位置找,还可以把代码写得更灵活一些,如:
# print(str.find('我',str.find('我')+1)) #表示的是找文中第二个'我',打印得第二个'我'的下标2
# 5*isalpha()方法:检查字符串中是否都是字母:
# print('安徽jmdk12'.isalpha()) #打印得False
# 6*isdigit()方法:检查字符串中是否都是数字,注意是字符串!!!:
# print('15615682567'.isdigit()) #打印得True,注意,有符号也是返回的False
# 7*str.join()方法:拼接.将sequence类型的参数的元素字符串合并(连接)到一个字符串,string作为分割符
# print('*'.join('我和我的祖国')) #如果是一整串字符串,则把*间隔放入,打印得:我*和*我*的*祖*国
# print('%'.join(['好','看','的','风','景'])) #打印得:好%看%的%风%景,注意如果有多个字符串,一定要用列表!!否则会报错,因为方法只接受一个元素
# print('&'.join({'name':'Tom','age':'23'})) #打印得:name&age,join方法也可以兼容字典,只会对键名进行拼接
# 8*split()方法:将字符串分割为几个子字符串,参数为分割符:
# print('我 和 我 的 祖 国'.split(' ')) #打印得:['我', '和', '我', '的', '祖', '国']
# print('我*和*我*的*祖*国'.split('*')) #打印得:['我', '和', '我', '的', '祖', '国']
# print('{'name':'Tom','age':'23'}'.split(,)) #报错,不可以对json字符串进行分割
#--以不在首尾位的'j'作为切割符,分割出来有三个元素,
# print('afjdnjklm'.split('j')) #打印得:['af', 'dn', 'klm']
#--以首位作为切割符,则首位是一个空列表,再对后面的字符串进行正常切割
# print('afjdnajklm'.split('a')) #打印得:['', 'fjdn', 'jklm']
#--以尾位作为切割符,则前面正常切割,但是尾位是一个空列表
# print('afjdmnajklm'.split('m')) #打印得:['afjd', 'najkl', '']
#==首尾都是同一个元素且为分割符,则字符串中间正常切割,首尾位是空列表
# print('hjsjifsjkh'.split('h')) #打印得:['', 'jsjifsjk', '']
# 9*lower()方法:将字符串里有大写字母的全部转换为小写字母:
# print('jdsKNnk'.lower()) #打印得:jdsknnk
# 10*upper()方法:将字符串里有小写字母的全部转化为大写字母:
# print('gfuJIFWEHFjiodj '.upper()) #打印得:GFUJIFWEHFJIODJ
# 11*replace()方法:替换字符串里指定的子字符串,默认全部替换:
# print('hyfuf'.replace('f','*')) #打印得:hy*u*
# print('hfffyfuf'.replace('f','*',2)) #也可在参数中设定指定个数,打印得:h**fyfuf
# 12*strip()方法:将字符串前置空和后置空格删除
# print(' jui efhf inf '.strip()) #打印得:jui efhf inf,中间的空格无法删除
# 12-1*lstrip()方法:将字符串前面的空格删除:
# print(' jui efhf inf '.lstrip()) #打印得:jui efhf inf .只删除了字符串前面的空格
# 12-2*rstrip()方法:将字符串后面的空格删除:
# print(' jui efhf inf '.rstrip()) #打印得: jui efhf inf,只删除了后面的空格
# 思考:怎么剔除该字符串的所有空格? 如下:
# 方法一:
# str=' jui efhf inf '
# print(str.replace(' ','')) #打印得:juiefhfinf,空格都被替换掉了
# 方法2:按空格切split()然后拼接join():
# str=' jui efhf inf ' #太麻烦了,方法不做详解
# 2- 列表的方法:
# -常用操作:
# list=[1,2,3,4,5,6]
# # 1.查找元素:通过下标获取(正负下标)
# # print(list[2]) #打印得:3
# # 2.修改元素:alist[0]=10
# list[3]=9
# # print(list) #打印得:[1, 2, 3, 9, 5, 6]
# # 3.增加元素两种方法:
# # -1尾部增加:alist.append(值)
# list.append('我爱我的祖国')#*注意,append只能填一个值
# # print(list) #打印得:[1, 2, 3, 9, 5, 6, '我爱我的祖国']
# # -2任意位置增加元素:(1) list.insert(位置下标,值)
# # (2) 插入的下标为负数时等价于-append()
# list.insert(list[0],6) #*注意是在第0位的后面增加元素
# # print(list) #打印得:[1, 6, 2, 3, 9, 5, 6, '我爱我的祖国']
# list.insert(list[-2],-6) #*下标为负数时倒着数的,表示在倒数第二位前面加入一个值
# # print(list) #打印得:[1, 6, 2, 3, 9, 5, -6, 6, '我爱我的祖国']
# # 4.删除元素:
# # 1- del list[下标]
# del list[-1]
# # print(list) #打印得:[1, 6, 2, 3, 9, 5, -6, 6],最后一位被删除了
# del list[:-5] #*del 还可以删除切片
# print(list) #打印得:[3, 9, 5, -6, 6],0到倒数第五位(不包括)被删除;
# list.pop(1) #*pop()中的参数直接填要删除的下标即可
# print(list) #打印得:[3, 5, -6, 6]
# 5.合并列表:
# 1-另存:list=list1+list2
# list1=[1,2]
# list2=['我','和','我','的','祖','国']
# list=list1+list2
# print(list) #打印得:[1, 2, '我', '和', '我', '的', '祖', '国']
# 2-扩展列表元素:list.extend(),同时将多个值附加到列表末尾
# list=['我','和','我','的','祖','国']
# list.extend([1,2]) #表示的是把extend里面的列表赋值到list的后面
# print(list) #打印得:['我', '和', '我', '的', '祖', '国', 1, 2]
# 3- 查看python手册:python 版本 manuals
'''
思考题;需求:
1-要求用户输入手机号
2-判断用户的运营商:移动130-150,联通151-170,电信171-190
3-对用户输入的手机号有误的需要给出相应的提示
'''
'''
编程思路分析:
tel=input('请输入您的手机号')
#if 1-判断是否是纯数字
2-判断手机位数
#3- 获取号段 -temp
if temp是移动:
移动
elif temp是联通:
联通
elif temp是电信:
电信
else:
不存在该号码
else:
'''
# tel=input('请输入您的手机号:')
# if tel.isdigit():
# if len(tel)==11:
# haoduan=tel[:3]
# if haoduan>='130' and haoduan<='150':
# print('移动')
# elif haoduan>='151' and haoduan<='170':
# print('联通')
# elif haoduan>='151' and haoduan<='170':
# print('电信')
# else:
# print('请输入正确字段的手机号')
# else:
# print('输入的手机号不足11位,请重新输入')
#
# else:
# print('请输入纯数字')
# 以上是关于思考题的代码