摔烂
- 一、可变与不可变类型
- 二、数字类型int与flort
- 三 、字符串类型str
- 1、定义方式
- 2、类型转换
- 3、内置方法
- 3.1 按索引取值(正向取,反向取)
- 3.2 切片(顾头不顾尾,步长)
- 3.3 长度len
- 3.4 成员运算 in 和 not in
- 3.5 strip移除字符串首尾指定的字符(默认移除空格)
- 3.6 切分split
- 3.7 strip, lstrip, rstrip
- 3.8 lower(),upper()(将英文字符串变成大小或小写)
- 3.9 startswith,endswith(判断字符串是否以指定字符串开头或结尾)
- 3.10 split,rsplit
- 3.11 join
- 3.12 replace(用新的字符替换字符串中旧的字符)
- 3.13 isdigit(判断字符串是否是纯数字组成,返回结果为True或False)
- 3.14 find,rfind,index,rindex,count
- 3.15 center,ljust,rjust,zfill
- 3.16 expandtabs
- 3.17 captalize,swapcase,title
- 3.18 is其他
一、可变与不可变类型
可变类型: 值改变,但是id不变,证明就是在改变原值,是可变类型,如list,dict。
不可变类型: 值改变,id也变,证明是产生了新值,并没有改变原值,原值是不可变类型,如int。
二、数字类型int与flort
整型int的定义: age=10 # 本质age = int(10)
浮点型float的定义: salary=3000.3 # 本质salary=float(3000.3)
int 与 flort常用与算数运算符与比较运算
注意:
名字+括号的意思就是调用某个功能,例如;
print(…)调用打印功能
int(…)调用创建整型数据的功能
float(…)调用创建浮点型数据的功能
类型转换:
#int功能可以把纯数字的字符串转换成int类型
res = int("18")
# res = int("1.8") # 报错 只能转整形
print(type(res)) # int
#float功能可以把浮点数组成的字符串转换成float类型
res = float("1.8")
print(type(res)) # flort
# 进制转换(拓展):
# 十进制转成其他进制:
# 10进制 -> 二进制
# 11 - > 1011
# 1011-> 8+2+1
print(bin(11)) # 0b1011
# 10进制 -> 八进制
print(oct(11)) # 0o13
# 10进制 -> 十六进制
print(hex(11)) # 0xb
print(hex(123)) # 0xb
# 其他制转成其十进制
# 二进制->10进制
print(int('0b1011',2)) # 11
# 二进制->8进制
print(int('0o13',8)) # 11
# 二进制->16进制
print(int('0xb',16)) # 11
三 、字符串类型str
可以用来记录描述性质的状态,例如名字、性别、国籍等
1、定义方式
在引号(’’,"",’’’’’’,""""""")内包含一串字符串
s = "hello" # 本质 s = str("hello")
2、类型转换
str功能可以把任意类型转换成str类型
res=str([1,2,3]) # "[1,2,3]"
print(type(res)) # str
3、内置方法
3.1 按索引取值(正向取,反向取)
str1 = 'hello python!'
# 正向取(从左往右)
print(str1[6])
# p
# 反向取(负号表示从右往左)
print(str1[-4])
# h
# 对于str来说,只能按照索引取值,不能改
print(str1[0]='H') # 报错TypeError
3.2 切片(顾头不顾尾,步长)
str1 = 'hello python!'
# 顾头不顾尾:取出索引为0到8的所有字符
print(str1[0:9])
# hello pyt
# 步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2、4、6、8的字符
print(str1[0:9:2] )
# hlopt
# 反向切片
print(str1[::-1] ) # -1表示从右往左依次取值
# !nohtyp olleh
3.3 长度len
str1 = 'hello python!'
# 获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符)
print(len(str1)) # 空格也算字符
# 13
3.4 成员运算 in 和 not in
str1 = 'hello python!'
# in:判断hello 是否在 str1里面
print('hello' in str1)
# True
# not in:判断tony 是否不在 str1里面
print('tony' not in str1)
#True
3.5 strip移除字符串首尾指定的字符(默认移除空格)
# 括号内不指定字符,默认移除首尾空白字符(空格、\n、\t)
str1 = ' life is short! '
print(str1.strip())
#life is short!
# 括号内指定字符,移除首尾指定的字符
str2 = '**tony**'
print(str2.strip('*'))
# tony
3.6 切分split
# 括号内不指定字符,默认以空格作为切分符号
str3='hello world'
print(str3.split())
# ['hello', 'world']
# 括号内指定分隔字符,则按照括号内指定的字符切割字符串
str4 = '127.0.0.1'
print(str4.split('.'))
# ['127', '0', '0', '1'] # 注意:split切割得到的结果是列表数据类型
3.7 strip, lstrip, rstrip
str1 = '**tony***'
print(str1.strip('*')) # 移除左右两边的指定字符
# 'tony'
print(str1.lstrip('*')) # 只移除左边的指定字符
# tony***
print(str1.rstrip('*')) # 只移除右边的指定字符
# **tony
3.8 lower(),upper()(将英文字符串变成大小或小写)
str2 = 'My nAme is tonY!'
print(str2.lower()) # 将英文字符串全部变小写
# my name is tony!
print(str2.upper()) # 将英文字符串全部变大写
# MY NAME IS TONY!
3.9 startswith,endswith(判断字符串是否以指定字符串开头或结尾)
str3 = 'tony jam'
# startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False
print(str3.startswith('t'))
# True
print(str3.startswith('j'))
# False
# endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False
print(str3.endswith('jam'))
# True
print(str3.endswith('tony') )
# False
3.10 split,rsplit
# split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
str5='C:/a/b/c/d.txt'
print(str5.split('/',1))
# ['C:', 'a/b/c/d.txt']
# rsplit刚好与split相反,从右往左切割,可以指定切割次数
str5='a|b|c'
print(str5.rsplit('|',1))
# ['a|b', 'c']
3.11 join
# 从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
print('%'.join('hello')) # 从字符串'hello'中取出多个字符串,然后按照%作为分隔符号进行拼接
# 'h%e%l%l%o'
print( '|'.join(['tony','18','read'])) # 从列表中取出多个字符串,然后按照*作为分隔符号进行拼接
# 'tony|18|read'
3.12 replace(用新的字符替换字符串中旧的字符)
# 用新的字符替换字符串中旧的字符
str7 = 'my name is tony, my age is 18!' # 将tony的年龄由18岁改成73岁
str7 = str7.replace('18', '73') # 语法:replace('旧内容', '新内容')
print(str7)
# my name is tony, my age is 73!
# 可以指定修改的个数
str7 = 'my name is tony, my age is 18!'
str7 = str7.replace('my', 'MY',1) # 只把一个my改为MY
print(str7)
# 'MY name is tony, my age is 18!'
3.13 isdigit(判断字符串是否是纯数字组成,返回结果为True或False)
# 判断字符串是否是纯数字组成,返回结果为True或False
str8 = '5201314'
print(str8.isdigit())
# True
str8 = '123g123'
print(str8.isdigit())
# False
3.14 find,rfind,index,rindex,count
# find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1
msg='tony say hello'
print (msg.find('o',1,3)) # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引
# 1
# index:同find,但在找不到时会报错
msg.index('e',2,4) # 报错ValueError
# rfind与rindex:略
# count:统计字符串在大字符串中出现的次数
msg = "hello everyone"
print(msg.count('e')) # 统计字符串e出现的次数
# 4
print( msg.count('e',1,6) ) # 字符串e在索引1~5范围内出现的次数
# 1
3.15 center,ljust,rjust,zfill
name='tony'
print(name.center(30,'-')) # 总宽度为30,字符串居中显示,不够用-填充
# -------------tony-------------
print(name.ljust(30,'*')) # 总宽度为30,字符串左对齐显示,不够用*填充
# tony**************************
print(name.rjust(30,'*')) # 总宽度为30,字符串右对齐显示,不够用*填充
# **************************tony
print(name.zfill(50)) # 总宽度为50,字符串右对齐显示,不够用0填充
# 0000000000000000000000000000000000000000000000tony
3.16 expandtabs
name = 'tony\thello' # \t表示制表符(tab键)
print(name)
tony hello
print(name.expandtabs(1)) # 修改\t制表符代表的空格数
tony hello
3.17 captalize,swapcase,title
# captalize:首字母大写
message = 'hello everyone nice to meet you!'
print(message.capitalize())
# Hello everyone nice to meet you!
# swapcase:大小写翻转
message1 = 'Hi girl, I want make friends with you!'
print(message1.swapcase())
# hI GIRL, i WANT MAKE FRIENDS WITH YOU!
# title:每个单词的首字母大写
msg = 'dear my friend i miss you very much'
priint(msg.title())
# Dear My Friend I Miss You Very Much
3.18 is其他
name = 'tony123'
print(name.isalnum()) #字符串中既可以包含数字也可以包含字母
# True
print(name.isalpha()) #字符串中只包含字母
# False
print(name.isidentifier())
# True
print(name.islower()) # 字符串是否是纯小写
# True
print(name.isupper()) # 字符串是否是纯大写
# False
print(name.isspace()) # 字符串是否全是空格
# False
print(name.istitle()) # 字符串中的单词首字母是否都是大写
# False