数据类型的内置方法
数据类型的内置方法
目录
一、数据类型内置方法理论
1.内置方法是每个数据类型自带的功能
2.python中数据类型调用内置方法的统一句式:句点符(.)
绑定字符串的变量名.字符串内置方法
eg:
'jia'.字符串内置方法
二、内置方法之整型相关操作
1.类型转换(把其他数据类型转换为整型)
int(其他数据类型)
浮点型转可以直接转,字符串转的话必须满足内部是纯数字才可以
eg:
res = int(12.56) # 12
res = int('12.56') # 字符串中必须纯数字才可以转,不然报错
2.进制数的转换
十进制转为其他进制:
print(bin(30)) # 0b11110
print(oct(20)) # 0o24
print(hex(30)) # 0x1e
规律:数字的开头如果是0b则为二进制,0o为八进制,0x为十六进制
其他进制转为十进制:
print(bin(0b11110, 2)) # 30
print(oct(0o24 ,8)) # 20
print(hex(0x1e, 16)) # 30
3.python自身对数字的敏感度较低(精确度低)
eg:
l1 = 2.1
l2 = 2
print(l1 - l2) #0.10000000000000009
如果需要更精准的计算时就需要借助于模块numpy....
三、内置方法之浮点型相关操作
1.类型转换(把其他数据类型转换为浮点型)
float(其他数据类型)
eg:
res = float('11.2.3')
print(res) # 报错
字符串里面可以允许出现一个小数点(不能两个小数点),其他必须是数字
2.python自身对数字的敏感度较低(精确度低)
eg:
a = [100.7, 100.9]
print(sum(a)) # 201.60000000000002
四、内置方法之字符串相关操作
1.类型转换
str(其他数据类型)
可以转任意数据类型,主要在前后加引号就好了
eg:
res1 = str(99)
print(res1,type(res1)) # 99 <class 'str'>
res2 = str('hell0')
print(res2,type(res2)) # hell0 <class 'str'>
res3 = str([1,2,3])
print(res3,type(res3)) # [1, 2, 3] <class 'str'>
res4 = str({'username':'jia'})
print(res4,type(res4)) # {'username': 'jia'} <class 'str'>
2.字符串内置方法必须掌握的方法
-
索引取值
索引取值(起始位置0开始,超出范围直接报错) s1 = 'hello word' print(s1[0]) # h print(s1[-1]) # d 负数的话就是从末尾开始
-
切片操作
eg: print(s1[1:4]) # ell print(s1[-4:-1]) # wor 默认切片的顺序是从左往右的
-
修改切片方向(间隔)
eg: print(s1[1:5:2]) # el 不做要求的话间隔,步长默认是1 print(s1[-1:-5:-1]) # drow -1从右往左索引 print(s1[:]) # hello word 不写数字就是默认都要 print(s1[2:]) # llo word 从索引2开始往后都要 print(s1[:5]) # hello 从索引0开始要到索引4 print(s1[::2]) # hlowr 全都要,间隔一个数
-
统计字符串中字符的个数
eg: print(len(s1)) # 10
-
移除字符串首尾指定的字符
.strip()方法:默认移除字符串首尾的空格 eg1: res = 'jia ' print(len(res)) # 4 print(len(res.strip())) # 3 eg2: res1 = '$$jia$$' print(res1.strip('$')) # jia 移除字符串首尾指定的字符 print(res1.lstrip('$')) # jia$$ 移除字符串左边指定的字符 print(res1.rstrip('$')) # $$jia 移除字符串右边指定的字符 只能移除首尾的指定字符,中间的移不了 eg3: username = input('username>>').strip() if username == 'jia': print('登录成功') 先获取用户输入的数据值,然后将首尾空格移除掉,再绑定给变量名
-
切割字符串中指定的字符
.split()方法:切割字符串中指定的字符 eg: res = 'jason|123|read' print(res.split('|')) # ['jason', '123', 'read'] 处理结果是个列表 print(res.split('|', maxsplit=1)) # ['jason', '123|read'] 从左往右切指定个数 print(res.rsplit('|', maxsplit=1)) # ['jason', '123|read'] 从右往左切指定个数
-
字符串格式化输出
format用法1:(等价于占位符) eg: res = 'name is {} age is {}'.format('jia', 123) print(res) # name is jia age is 123 format用法2:(索引取值,并支持重复使用) eg: res = 'name is {0} age is {1} {0}'.format('jia', 123) print(res) format用法3:(占位符:见名知意) eg: res = 'name is {name1} age is {age1}'.format(name1='jia', age1=123) print(res) format用法4:(推荐) eg: name = input('username>>') age = input('age>>') res = f'my name is {name} my age is {age}' print(res)
3.字符串内置方法必须了解的方法
-
大小写相关
.upper() 统一转为大写 .lower() 统一转为小写 eg: res = 'hElLO WorlD' print(res.upper()) # HELLO WORLD print(res.lower()) # hello world
-
判断字符中是否是纯数字
.isdigit() 判断字符里面是否是纯数字 eg: guess_age = input('guess_age>>>:').strip() if guess_age.isdigit(): guess_age = int(guess_age) else: print('输的不对')
-
替换字符串中指定内容
.replace() 替换指定内容 eg: guess_age = input('guess_age>>>:').strip() if guess_age.isdigit(): guess_age = int(guess_age) else: print('年龄都不知道怎么输吗???')
-
字符串的拼接
.join() 拼接字符串 eg: print('|'.join(['jason', 123])) # 参与拼接的数据值必须都是字符串
-
统计字符出现的次数
.count()统计字符出现的次数 eg: res = 'hello world' print(res.count('l'))
-
判断字符串的开头或者结尾
eg: res = 'jason say hello' print(res.startswith('jason')) print(res.endswith('o'))
-
其他方法
.title() # 所有首字母大写 .capitalize() # 第一个的首字母大写 .swapcase() # 大写变为小写,小写变为大写,大小写转换 .index() # 索引 .find() # 查找
五、内置方法之列表相关操作
l1 = [11, 22, 33, 44, 55, 77]
1.索引取值
eg:
print(l1[-1]) # 77
2.切片操作
eg:
print(l1[0:5]) # [11, 22, 33, 44, 55]
3.间隔数
eg:
print(l1[::-1]) # [77, 55, 44, 33, 22, 11]
4.统计列表中的数据值个数
eg:
print(len(l1)) # 6
5.数据值修改
eg:
l1[0] = 99
print(l1) # [99, 22, 33, 44, 55, 77]
6.列表中添加数据值
(1).append() # 尾部追加数据值
eg: l1.append('数据')
(2).insert() # 任意位置插入数据值
eg: l1.insert(1, [11, 33])
(3)+号 # 扩展列表 合并列表
eg:
l2 = [2, 4]
print(l1 + l2) # [11, 22, 33, 44, 55, 77, 2, 4]
(4).extend() # 相当于for循环加append
eg:
l1.extend(l2)
print(l1) # [11, 22, 33, 44, 55, 77, 2, 4]
相当于:
for i in l2:
l1.append(l2)
print(l1)
7.删除列表数据
(1)del 通用删除关键字del
eg:
del l1[0]
print(l1)
(2) remove 彻底删除数据值
eg:
l1.remove(22)
print(l1)
(3)pop 尾部弹出数据值,并没有真正删除数据
eg:
l1.pop(33)
print(l1)
8.排序
(1) .sort()就是升序
eg:
s1 = [33, 44, 66, 88, 21, 12]
s1.sort()
print(s1) # [12, 21, 33, 44, 66, 88]
(2) 降序 加一个参数,将其设为True,就是降序了
eg:
s1 = [33, 44, 66, 88, 21, 12]
s1.sort(reverse=True)
print(s1) # [88, 66, 44, 33, 21, 12]
9. 统计列表中某个数据出现的次数
eg:
print(l1.count(22))
10.颠倒列表顺序
eg:
l1.reverse()
print(l1)
六、可变类型与不可变类型
eg:
s1 = '$$jia$$'
s1.strip('$')
print(s1) # $$jia$$
注:字符串在调用内置方法之后不会修改自己,而是产生了一个新的结果
eg:
l1 = [11, 22, 33, 44]
l1.append(33)
print(l1) # [11, 22, 33, 44, 33]
注:列表在调用内置方法之后修改的就是自身,并没有产生一个新的结果
可变类型:值改变,内存地址不变
eg:
l1 = [11, 22, 33, 44]
print(l1) # [11, 22, 33, 44]
print(id(l1)) # 1643060049856
l1.append(44)
print(l1) # [11, 22, 33, 44, 44]
print(id(l1)) # 1643060049856
不可变类型:值改变,内存地址肯定变
eg:
res = '$$hello world$$'
print(res) # $$hello world$$
print(id(res)) # 1689900415664
res.strip('$')
print(res) # $$hello world$$
print(id(res)) # 1689900415664
字符串不支持修改,要想值改变,就得程序赋值
可变类型:集合,列表,字典
不可变类型:整型,字符串,元组,
七、作业
1.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
解答:
data_source = 'jason|123'
data = data_source.split('|')
username = input('username>>')
password = input('password>>')
if username == data[0] and password == data[1]:
print('登录成功')
else:
print('用户名或者密码有误')
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
解答:
data_source = ['jason|123', 'kevin|321', 'oscar|222']
username = input('username>>')
password = input('password>>')
# data_source = str(data_source)
for i in data_source:
data = i.split('|')
user = data[0]
pwd = data[1]
if username == user and password == pwd:
print('登录成功')
break
else:
print('用户名或者密码有误')