Python-基础数据类型进阶(int,flort,str)

一、可变与不可变类型

可变类型: 值改变,但是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值