数据类型内置方法理论
之前所学习的每一种数据类型本身都含有一系列的操作方法,内置方法是其中最多的(内置就是数据类型自带的功能)
python中数据类型调用内置方法的统一句式>>>:句点符就是一个点.
' jason'.字符串内置方法
绑定字符串的变量名
str字符串内置方法
ps:数据类型的内置方法比较多,需要多练
整型内置方法与操作
1.数据类型转换(讲其他数据类型转换成整型)
关键字:int(其他数据类型)
ps:浮点型可以直接转,字符串必须满足内部是
代码展示:
l1 = '12'
l1 = int(l1)
print(type(l1))
l2 = 12.23
l2 = int(l2)
print(type(l2)) # 输出显示已经转为整型
2.进制数转换
十进制转其他进制:
print(bin(100)) # 转换为2进制0b1100100
print(oct(100)) # 转换为8进制0o144
print(hex(100)) # 转换为16进制0x64
其他进制转为10进制:
print(int("0b1100100", 2))
print(int("0o144", 8))
print(int('0x64', 16))
3.python自身对数字的敏感度较低(精确低)
如果进行精准的计算需要借助与模块numpy
浮点型内置方法与操作
1.类型转换
float(其他数据类型)
字符串里面可以允许出现一个小数点,其他都必须是纯数字
代码展示:
l1 = 12
l1 = float(l1) # 将l1转换成float浮点型
print(l1) # 输出显示l1位12.0
print(type(l1)) # 输出显示已经转化为浮点型
字符串:
l1 = '12.2'
l1 = float(l1)
print(l1) # 显示输出l1位12.2
print(type(l1)) # 输出显示已经转为浮点型float
字符串内置方法与操作
1.类型转换
str(其他数据)进行转换
2.必须要掌握的内容:
l1 = 'helloword'
1.索引取值
print(l1[0]) # h
print(l1[-1]) # d 支持负数,也就是从末尾开始索引
2.切片操作
print(l1[1:5]) # 索引从1开始,5结束(不包含5)ello
print(l1[-1:-5]) # 直接不执行,因为索引默认是从左到右的
print(l1[-5:-1]) # 这样反向可以,owor,从-5开始-1结束,不包含-1
3.修改切片方向
print(l1[1:5:1]) # 默认切片间隔是1,也就是没有间隔值ello
print(l1[1:5:2]) # 间隔改2,表示隔1个位置取值el
print(l1[-1:-5:-1]) # 第一个-1最后的字母,-5取到倒是5结束,-1表示从右到左
print(l1[:]) # 没有内容表示全部都要helloword
print(l1[2:]) # 第二个开始全部都要lloword
print(l1[:6]) # 第六个结束之前的全部都要hellow
print(l1[::2]) # 间隔一个字母全部都要
4.统计字符串中字符的个数
print(len(l1)) # 9个,关键字len
5.移除字符串收尾指定的字符
username = input('请输入你的用户名>>>:').strip() # 同下句更节省
# username = username.strip() # 表示将输入收尾的空格删掉
if username == 'jason': # 注意如果输入jason时后面加空格就不会显示成功
print('登录成功')
---------------------------
l2_s = ' jason '
print(len(l2_s)) # 显示有9个字符
l2_s = l2_s.strip() # 删除变量名l2绑定数据值里面收尾的空格
print(len(l2_s)) # 显示有5个字符
-------------------------
l2_s = '###jason###'
l2_s = l2_s.strip('#') # 删除l2_s中的警号
print(l2_s) # 输出jason
print(l2_s.lstrip('#')) # 删除左边的警号jason###
print(l2_s.rstrip('#')) # 删除右边的警号###jason
6.切割字符串中指定的字符
l3_s = 'jason|1233|yellow'
print(l3_s.split('|')) # 删掉|,处理为列表['jason', '1233', 'yellow']
name, num, hobby = l3_s.split('|') # 使用解压赋值
print(name) # jason
print(num) # 1233
print(hobby) # yellow
print(l3_s.split('|', maxsplit=1)) # 从左往右第一个|
print(l3_s.rsplit('|',maxsplit=1 )) # 从右往左第一个
print(l3_s.split('|', maxsplit=2)) # 从左往右前2个
print(l3_s.split('|', maxsplit=3)) # 从左往右前3个
print(l3_s.rsplit('|', maxsplit=2)) # 从右往左前2个
print(l3_s.rsplit('|', maxsplit=3)) # 从右往前前3个
print(l3_s.rsplit('|')) # 从右往左全部切割
7.字符串格式化输出
format玩法1:等价位占位符
l4_s = 'my name is {} my age is {}'.format('jason', 18, 'yellow')
print(l4_s) # my name is jason my age is 18
format玩法2:索引取值并支持反复使用
l5_s = 'my name is {0} my age is {1} {0} {1}'.format('jason', 18)
print(l5_s) # my name is jason my age is 18 jason 18
format玩法3:占位符见名知意
l6_s = 'my name si {name1} my age is {age1}'.format(name1='jason', age1=18)
print(l6_s) # my name si jason my age is 18
l7_s = '我的名字是{name},我的年龄是{age},我喜欢的颜色是{solour}'.format(name='a ning', age=18, solour='yellow')
print(l7_s) # 我的名字是a ning,我的年龄是18,我喜欢的颜色是yellow
format玩法4:最推荐
name = input('username>>>":')
age = input('age>>>>:')
l8_s = f'my name is {name} my age is {age}'
print(l8_s)
3.字符串需要了解的方法
1.大小写相关
l1_s = 'HeLLo WorD 888'
print(l1_s.upper()) # 全大写 HELLO WORD 888
print(l1_s.lower()) # 全小写 hello word 888
"""
用于图片验证码,生成没有大小写统一的验证码,展示给用户看
获取用户输入的验证码,将用户输入的验证码和当初产生的验证码统一大小写
"""
code = '9K36Mn'
print('展示给用户看的图片验证码', code)
confirm_code = input('请输入验证码').strip() # strip 移除收尾空格
if confirm_code.upper() == code.upper(): # 此处用supper统一转为大写
print('验证码正确')
------------------------------
反推统一为小写怎么写
l4_s = 'M2HjK'
print('展示给用户看的图片验证码', l4_s)
l5_s = input('请输入验证码').strip() # sprit 移除收尾的空格
if l5_s.lower() == l4_s.lower(): # 输入的以及定义的全部转小写,进行比对
print('验证码正确')
2.判断字符串是否是纯数字
res =''
print(res.isdigit()) # False 错,不是纯数字
guess_age = input('guess_age>>>:').strip() # 输入年龄并且清掉收尾的空格,input输入都是字符串
if guess_age.isdigit(): # 如果guess_sge是整数的字符串
guess_age = int(guess_age) # 那么将这个字符串转为整型
else: # 如果不是
print('数字都不会打么') # 直接输出提醒打数字
3.替换字符串中指定的内容
l5_s = 'my name is jason jason jason jason '
print(l5_s.replace('jason', 'tony')) # tony替换jason my name is tony tony tony tony
print(l5_s.replace('jason', 'tony', 1)) # tony替换第一个jason my name is tony jason jason jason
print(l5_s.replace('jason', 'li lizhi', 3)) # 替换前3个
print(l5_s.replace('jason', 'lizhi',4)) # 替换前4个
4.字符串的拼接
ll1 = 'hello'
lll2 = 'word'
print(ll1+lll2) # helloword
print(ll1+'$$$'+lll2) # hello$$$word
print(ll1 * 10) # 打10遍
print('|'.join(['jason', '123', 'read', 'JDB'])) # jason|123|read|JDB 关:join
print('|'.join(['jason', 123])) # 参与拼接的数值必须都是字符串 关:join
print('%'.join(['jason', '123'])) # jason%123 关:join
print('#'.join(['lizhi', 'tony'])) # lizhi#tony关:join
5.统计指定字符出现的次数
lll1 = 'hello word'
print(lll1.count('h')) # 判断h出现的次数,关键字conut
l1 = [1, 2, 2, 2, 5, 6, 2]
print(l1.count(2)) # 4次 关键字:count
6.判断字符串的开头或者结尾
l1 = 'jason say hello'
# print(l1.startswith('jason')) # 判断jason是开头么,答案True
# print(l1.startswith('j')) # True
# print(l1.startswith('say')) # False
# print(l1.startswith('h')) # False
# print(l1.startswith('s')) # False
print(l1.endswith('o')) # True 判断是不是结尾
print(l1.endswith('hello')) # True
print(l1.endswith('say')) # False
7.其他方法补充
l1 = 'HeLLo WorD'
print(l1.title()) # 首字母大写 Hello Word
print(l1.capitalize()) # Hello word 第一个字母大写
print(l1.swapcase()) # 相反的大小写 hEllO wORd
print(l1.index('D')) # 查看字母在第几个位置
print(l1.index('X')) # 找不到直接报错
print(l1.find('o')) # 查看字母在第几个位置
print(l1.find('x')) # 找不到默认回到-1
print(l1.find('He')) # 组合字母的位置
列表内置方法及操作
1.类型转换
list(其他数据类型)
ps:能够被for循环的数据类型都可以转成列表
print(list('hello')) # 转字符串['h', 'e', 'l', 'l', 'o']
print(list({'name':'jason', 'pwd':123})) # 转字典['name', 'pwd']
print(list((1, 2, 3, 4))) # 转元组[1, 2, 3, 4]
print(list({1, 2, 3, 4, 5})) # 转集合[1, 2, 3, 4, 5]
2.需要掌握的方法
l1 = [111, 222, 333, 444, 555, 666, 777, 888]
# 1.索引取值
print(l1[0]) # 取第一个
print(l1[-1]) # 取最后一个
print(l1[5]) # 取第五个 666
2.切片操作 与字符串一致
print(l1[1:5]) # 第一个开始,第五个结束,不包含第五个
print(l1[-5:-1]) # 倒是第五个开始,倒数第一个结束,不包含倒一
print(l1[1:]) # 从第一个开始到结束全部
3.间隔数方向,与字符串一致
print(l1[0:5:2]) # 从0开始到5结束,间隔1取
4.统计列表中数据值的个数
print(len(l1)) # 关键字:len 8个
5.数据值修改
l1[0] = 123 # 取l1第0为111,修改为123
print(l1)
l1[5] = 785
print(l1)
6,列表添加数据值
方式1:尾部增加数据
l1.append('吃饭了') # 添加末尾[111, 222, 333, 444, 555, 666, 777, 888, '吃饭了']
print(l1)
l1.append(['jason', 'tony', 'tom'])
print(l1) # [111, 222, 333, 444, 555, 666, 777, 888, '吃饭了', ['jason', 'tony', 'tom']]
方式2:任意位置插入数据值
l1.insert(0, 'jason') # 讲列表0的位置给’jason
print(l1)
l1.insert(3, 'tom') # 将列表3的位置给‘tom
print(l1)
方式3:扩展列表,合并列表
ll1 = [11, 22, 33]
ll2 = [44, 55, 66]
print(ll1+ll2) # [11, 22, 33, 44, 55, 66]
ll1.extend(ll2) # 相当于for循环把ll2中一个个拿出来,然后append添加到ll1末尾
print(ll1)
for i in ll2:
ll1.append(i)
print(ll1)
7. 删除列表数据
方式1:通用的删除关键字del
del ll1[0] # 删除ll1第0个数字
print(ll1) # [22, 33]
方式2:remove
ll1.remove(11) # 删除11
print(ll1) # [22, 33]
方式3:pop
ll1.pop(2) # 括号里面是索引值
print(ll1) # [11, 22]
ll1.pop() # 括号没数字,默认最后一个
print(ll1) # [11, 22]
8排序
# ss = [54, 99, 55, 76, 12, 43, 76, 88, 99, 100, 33]
ss.sort() # 默认是升序
print(ss) # [12, 33, 43, 54, 55, 76, 76, 88, 99, 99, 100]
ss.sort(reverse=True) # 更改为降序
print(ss) # [100, 99, 99, 88, 76, 76, 55, 54, 43, 33, 12]
9.统计列表中某个数据值出现的次数
print(ss.count(99)) # 99出现的个数 2
10.颠倒列表顺序
ll1.reverse() # 将列表原来的顺序颠倒
print(ll1) # 33, 22, 11]
可变类型与不可变类型
s1 = '$$jason$$'
l1 = [11, 22, 33]
s1.strip('$') # 删除符号$
print(s1) # $$jason$$
"""字符串在调用内置方法之后并不会修改自己,而是产生了一个新的结果
如何查看调用方法之后有没有新的结果,可以在调用该方法的代码左侧添加变量名和赋值符号
res = s1.strip('$')
"""
ret = l1.append(44)
print(l1) # [11, 22, 33, 44]
print(ret) # None,没有找到
列表在调用内置方法之后修改的就是自身 并没有产生一个新的结果
l1 = [11, 22, 33]
print(l1)
print(id(l1)) # 内存地址:2442343205824
l1.append(44) # 末尾添加44
print(l1)
print(id(l1)) # 2442343205824
不可变类型:值改变,内存地址肯定变
res = '$hello word$'
print(res)
print(id(res)) # 2022789544688
res = res.strip('$') # 删除$
print(res)
print(id(res)) # 2674751831216
作业
1.
data_source = 'jason|123' # 条件
# 1.将用户名和密码拿出来
name, password = data_source.split('|') # 2.关键字split删除'|',解压赋值
# print(name, password) # 3.确定用户名和密码
# 4.用户输入
username = input('请输入你的账户名>>>>:').strip() # 删除输入的空格方式出错
is_password = input('请输入你的密码>>>:').strip() # 删除输入的空格方式出错
# 5,判断用户输入的和数据库是否一致
if username == name and is_password == password:
print('登录成功')
else:
print('账号密码错误')
2.
data_source = ['jason|123', 'kevin|321', 'oscar|222'] # 条件
# 1.用户输入
username = input('请输入你的账户>>>:').strip() # 2.输入账户名去掉首尾空格
password = input('请输入你的密码>>>:').strip() # 3.输入密码去掉首尾空格
l1 = username + '|' + password # 将两个字符串组合
# print(l1)
if l1 in data_source: # 判断组合的账号密码是否在数据库里面
print('登录成功')
else:
print('登录失败')
3.
# 用列表编写用户管理系统,那么肯定是要有列表的
data_source = ['jason', 'kevin', 'oscar']
# 1.姓名管理系统,肯定要有用户输入
username = input('请输入你的账户名>>>:').strip() # 删掉空格
password = input('请输入你的密码>>>:').strip() # 删掉空格
# 2.用户输入正确的账号密码可以进系统
if username in data_source: # 判断输入的用户名和密码是否是管理员账号
while True: # 因为要重复执行命令,所以下面的指令都要进入循环
l1 = input('请输入你的指令>>>:')
if l1.isdigit(): # 判断指令是不是数字
l1 = int(l1)
else:
print('数字都不会打么')
# 3.用户登录成功就可以
# 4.登录成功,输入1执行添加用户名功能
if l1 == 1: # 5.如果用户输入的是1,那么执行下面的操作
l2 = input('请输入添加的用户名>>>:') # 输入添加的用户名
data_source.append(l2) # 添加用户名到列表,关键字append
elif l1 == 2:
print(data_source[:])
elif l1 == 3:
l3 = input('请输入删除的用户名>>>:') # 输入删除的用户名
data_source.remove(l3) # 指定删除
else:
print('没有管理员权限')