【0802 | Day 7】Python进阶(一)
1.find( )、rfind( )、index( )、rindex( )、count( )
2.center( )、ljust( )、rjust( )、zfill( )
4.captalize( )、swapcase( )、title( )
写在开篇:
可变:变量值发生改变,id地址不变【在原来的基础上】
不可变:变量值发生改变,id地址改变【开辟新的空间】
数字类型的内置方法
数字类型分为整型和浮点型。
一、整型内置方法(int)
用途:年龄、id、级别等
定义:可以使用int( )方法将纯数字的字符串转为十进制的整型
age = 19 age = int(10) print(type(age)) #<class 'int'>
x = int('111') print(type(x)) #<class 'int'>
x = int('11.1') print(x) #报错,int(字符串需为整数)
常用操作+内置方法:算术运算+比较运算
有序or无序:
不存在有序无序之说
存值单个or多个:
单个
可变or不可变:
不可变
二、浮点型内置方法(float)
用途:薪资、身高、体重
定义:可以使用float()方法将纯数字的字符串转为浮点型数字
age = 3.1 age = float(3.1) print(type(age)) #<class 'float'>
x = float('111') print(x) print(type(x)) #111.0 #<class 'float'>
x = float('11.1') #非纯数字的字符串 报错 print(type(x)) #<class 'float'>
常用操作+内置方法:算术运算+比较运算
有序or无序:
无有序无序之说
存单值or多值:
单值
可变or 不可变:
不可变
字符串类型内置方法
一、字符串类型内置方法(str)
-
b'101':二进制编码的字符串
-
r'\n':原生字符串,r会令字符串里的命令失效
name = 'nick' s1 = str(1.1) s2 = str([1,2,3]) print(f's1:{s1},type:{type(s1)}') print(f's2:{s2},type:{type(s2)}') #s1:1.1,type:<class 'str'> #s2:[1,2,3],type:<class 'str'>
常用操作+内置方法:常用操作和内置方法分为优先掌握,需要掌握和其他操作三个部分
有序or无序:
只要是有索引的,都是有序的,因此字符串是有序的
存单值or多值:
单值
可变or不可变:
不可变
二、常用操作和内置方法
优先掌握:
-
按索引取值
-
切片
-
长度len
-
成员运算in | not in
-
移除空白
-
切分split
-
循环
1.索引取值
mm = 'hello nick' print(f'索引为6:{mm[6]}') print(f'索引为-3:{mm[-3]}') #索引为6: n #索引为-3:i
2.切片
mm = 'hello nick' print(f'切片3到最后:{m[3:]}') print(f'切片3-8:{mm[3:8]}') print(f'切片3-8,步长为2:{mm[3:8:2]}') print(f'切片3-最后,步长为2:{mm[3::2]}') print('\n**了解知识点**') print(f'切片所有: {mm[:]}') print(f'反转所有: {mm[::-1]}') print(f'切片-5--2: {mm[-5:-2:1]}') print(f'切片-2--5: {mm[-2:-5:-1]}' #切片3-最后: lo nick #切片3-8: lo ni #切片3-8,步长为2: l i #切片3-最后,步长为2: l ik #**了解知识点** #切片所有: hello nick #反转所有: kcin olleh #切片-5--2: ni #切片-2--5: cin
3.长度len
mm = 'hello nick' print(len(mm)) #10
4.成员运算in or not in
mm = 'my name is nick, nick handsome' print(f"'nick' in mm:{'nick' in mm}") print(f"'jason' not in mm:{'jason' not in mm}") print(f"not 'jason' in mm:{not 'jason' in mm}") #'nick' in msg: True #'jason' not in msg: True #not 'jason' in msg: True
5.移除空白strip( )
name = '&&&n ick' print(f"name.strip('&'):{name.strip('&')"}) print(f"name:{name}") pwd = input('password: ') if pwd.strip() == '123': print('密码输入成功') print(f"'*-& nick+'.strip('*-&+'):{'*-& nick+'.strip('*-& +')}") #name.strip('&'): n ick #name: &&&n ick #password: 123 #密码输入成功 #'*-& nick+'.strip('*-& +'): nick
6.切分split
info = 'nick:male:19' info_list1 = info.split(':') info_list2 = info.split(':',1) print(f'info_list1:{info_list1}') print(f'info_list2:{info_list2}') #info_list1:['nick', 'male', '19'] #info_list2:['nick', 'male:19']
7.循环
mm = 'hello nick' for i in mm: print(i) #h #e #l #l #o #n #i #c #k
需要掌握:
-
lstrip&rstrip
-
lower&upper
-
startswith&endswith
-
rstrip
-
join
-
replace
-
isdigit
1.lstrip( )和rstrip( )
name = '&&nick&&' print(f"{name.lstrip('&')}") print(f"{name.rstrip('&')}") #nick&& #&&nick
2.lower( )和upper( )
name = 'Nick Chen' print(f'{name.lower()}') print(f'{name.upper()}') #nick chen #NICK CHEN
3.startswith( )和endswith( )
name = 'Nick Chen' print(f'{name.startswith("Nick")}') print(f'{name.endswith("chen")}') #True #False
4.rsplit( )
info = 'nick:male:19' print(f"{info.rsplit(':'),1}") #['nick:male','19']
5.join( )
lis = [1,2,'19'] print(f"{':'.join(lis)}") #报错 数字和字符串不可拼接 lis = ['nick','male','19'] print(f"{':'.join(lis)}") #nick:male:19
6.replace( )
name = 'nick shuai' print(f"{name.replace('shuai','handsome')}") #nick handsome
7.isdigit( )
salary = '111' print(salary.isdigit()) salary = '111.1' print(salary.isdigit()) #True #False
age = input('age: ') if age.isdigit(): age = int(age) if age < 18: print('小姐姐:)') else: print('阿姨好:)') else: print(f'你的年龄是这个{age}?') #结果一: age: 18 阿姨好:) #结果二: age: 啊? 你的年龄是这个啊??
其他操作:
-
find | rfind | index |rindex | count
-
cente | ljust |rjust | zfill
-
expandtabs
-
captalize | swapcase | title
-
is 系列
1.find( )、rfind( )、index( )、rindex( )、count( )
mm = 'my name is tank, tank shi sb, hha' print(f"{mm.find('tank')}") print(f"{mm.find('tank',0,3)}") #从0开始索引,3结束索引,找不到返回-1 print(f"{mm.rfind('tank')}") print(f"{mm.index('tank')}") print(f"{mm.rindex('tank')}") print(f"{mm.count('tank')}") #11 #-1 #17 #11 #17 #2
注意:find找不到返回-1,index找不到直接报错
2.center( )、ljust( )、rjust( )、zfill( )
print(f"{'info nick'.center(50,'*')}") #放置中央 print(f"{'info nick'.ljust(50,'*')}") #调整*居左 print(f"{'info nick'.rjust(50,'*')}") #调整*居右 print(f"{'info nick'.zfill(50)}") #填充0居右 ********************info nick********************* info nick***************************************** *****************************************info nick 00000000000000000000000000000000000000000info nick
3.expandtabs( )
print(f"a\\tb\\tc: %s" %('a\tb\tc\t')) print(f"'a\\tb\\tc'.expandtabs(32): %s" %('a\tb\tc\t'.eapandtabs(32)) #a\tb\tc: a b c #'a\tb\tc'.expandtabs(32):a b c
注意:’ \ '加在‘ \t ’、' \n '等之前则命令失效,成为普通字符串
4.captalize( )、swapcase( )、title( )
name = 'nick handsome sWAPCASE' print(f"name.capitalize(): {name.capitalize()}") #首字母大写,用在段落开始 print(f"name.swapcase(): {name.swapcase()}") # 大小写互转 print(f"name.title(): {name.title()}") #所有单词首字母大写 Nick handsome sWAPCASE NICK HANDSOME Swapcase Nick Handsome Swapcase
5.is数字系列(只是为了告诉你,判断是否为数字时除了中文数字以后使用isdigit( )即可)
-
isdecimal(): 检查字符串是否值包含十进制字符,如果是返回True,否则返回False。
-
isdigit(): 如果字符串只包含数字则返回True,否则返回False。(重要)
-
isnumeric(): 如果字符串中只包含数字字符,则返回True,否则返回False。
num = "1" #unicode num.isdigit() # True num = "1" # 全角 num.isdigit() # True num = b"1" # byte num.isdigit() # True num = "IV" # 罗马数字 num.isdigit() # True num = "四" # 汉字 num.isdigit() # False =================== isdigit() True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字 False: 汉字数字 Error: 无 ================ import unicodedata unicodedata.digit("2") # 2 unicodedata.digit("2") # 2 unicodedata.digit(b"3") # TypeError: must be str, not bytes unicodedata.digit("Ⅷ") # ValueError: not a digit unicodedata.digit("四") # ValueError: not a digit #"〇","零","一","壱","二","弐","三","参","四","五","六","七","八","九","十","廿","卅","卌","百","千","万","万","亿"
6.is其他
-
salpha(): 如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
-
islower(): 如果字符串中只包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False。
-
isupper(): 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回False。