- 数据类型内置方法理论
- 整型相关操作
- 浮点型相关操作
- 字符串相关操作
- 列表相关操作
数据类型内置方法理论
我们之前学习的每一种数据类型本身都含有一系列的操作方法,内置方法是其中最多的(自带的功能)
在python中数据类型调用内置方法的统一句式为>>>:句点符
'jason'.字符串内置方法
绑定字符串的变量名.字符串内置方法
str.字符串内置方法
ps:数据类型的内置方法比较的多 想要掌握,不可以靠死记硬背 更多时候靠的是孰能生巧.
整形内置方法与操作 int
1.类型转换(将其他类型数据转换成整形)
int(其他数据类型)
ps:浮点型可以直接转 字符串必须满足内部是纯数字才可以
2.进制数转换
十进制转换其他进制
0b二进制缩写 print(bin(100)) # 0b1100100
0x八进制缩写 print(oct(100)) # 0o144
0x十六进制缩写 print(hex(100)) # 0x64
'''
数字的开头如果是0b则为二进制 0o则为八进制 0x则为十六进制
'''
其他进制转十进制
print(int(0b1100100))
print(int(0o144))
print(int(0x64))
print(int("0b1100100", 2))
print(int("0o144", 8))
print(int("0x64", 16))
3.python自身对数字的敏感度较低(精确度低)
python这门语言其实不厉害 主要是背后有大佬
如果需要进准的计算需要借助于模块numpy.....
Float浮点型内置方法与操作
1.类型转换
float(其他数据类型)
字符串里面可以允许出现一个小数点 其他必须是纯数字
2.python自身对数字的敏感度较低(精确度低)
python这门语言其实不厉害 主要是背后有大佬
如果需要进准的计算需要借助于模块numpy.....
str 字符串内置方法与操作
1.类型转换
str(其他类型数据)
ps:可以转换任意数据类型(只需要在后面加引号即可)
2.必须要掌握的方法
2.1.索引取值(其实位置0开始 超出范围直接报错)
s1 = ('hello world!') # 定义变量名
print(s1[0]) # 打印输出 h
print(s1[-1]) # 输出结果 !支持负数 从末尾开始
2.2.切片操作
print(s1[1:5]) # 索引取值 从1取到4 顾头不顾尾
print(s1[-1:-5]) # 输出结果空白 默认索引从左到右开始
print(s1[-5:-1]) # 输出结果orld 默认索引数据从左到右开始
2.3. 修改切片方向
print(s1[1:5:1]) # 输出 ello 默认从1开始 差值为1
print(s1[1:5:2]) # 输出 el 默认从1开始 差值为2
print(s1[-1:-5:-1]) # 反方向的种 从后面开始 差值1 索引到4
print(s1[:]) # 不写数字就默认都要
print(s1[2:]) # 从索引2开始往后都要
print(s1[:5]) # 从索引0开始往后要到4
print(s1[::2]) # 索引所有值 差值2
2.4.统计字符串中字符的个数
print(len(s1)) # 12 总共有12个数
2.5.移除字符串首尾指定的字符
username = input('username>>>:').strip()
# username = input('username>>>:')
# username = username.strip() 两行代码和上面一样代码运行结果一样 单代码更方便!
if username == 'wei': # 如果后面没有strip(),'wei ' 如果有空字符串,输出有误!
print('登陆成功')
res = ' jason '
print(len(res)) # 空字符串也占位1 长度9个字符
print(len(res.strip())) # strip()括号内不写 默认移除首尾的空格 结果:5
res1 = '$$wei$$'
print(res1.strip('$')) # wei
print(res1.lstrip('$')) # wei$$
print(res1.rstrip('$')) # $$wei
2.6.切割字符串中指定的字符
res = 'jason|123|read'
print(res.split('|')) # ['jason', '123', 'read'] 该方法的处理结果是一个列表
# split翻译:
# V:使....分裂/n:分裂; 分离; 分歧; 划分; 分别; 份额; 裂缝; 裂口; 劈叉
name, password, hobby = res.split('|') # 使用变量名代替对应的字符
print(res.split('|', maxsplit=1)) # maxsplit:最大切割值 后面数字多少 切割多少
# ['jason', '123|read'] 默认从左往右切指定个数
print(res.rsplit('|',maxsplit=1))
# ['jason|123', 'read'] 从右往左切指定个数
resplit:从右到左
2.7.字符串格式化输出
format玩法1:等价于占位符
res = 'my name is {} my age is {}'.format('wei', 123) # {}等价于占位符
print(res) # my name is wei my age is 123
format玩法2:索引取值并支持反复使用
res = 'my name is {0} my age is {1} {0} {0} {1}'.format('jason', 123)
print(res) # my name is jason my age is 123 jason jason 123
format玩法3:占位符见名知意
res = 'my name is {name1} my age is {age1}'.format(name1='jason', age1=123)
print(res) # my name is jason my age is 123 jason 123 jason
format玩法4:推荐使用(******* 给鸡哥拉满!!!!!!)
name = input('username>>>:')
age = input('age>>>:')
res = f'my name is {name} my age is {age}' # f代表了 .format
print(res)
3.字符串
1.大小写相关
res = 'hElLO WorlD 666'
print(res.upper()) # HELLO WORLD 666 全部大写
print(res.lower()) # hello world 666 字母全部小写
'''
图片验证码:生成没有大小写统一的验证码 展示给用户看
获取用户输入的验证码 将用户输入的验证码和当初产生的验证码统一转大写或者小写再比对
'''
code = 'zBcqD1'
print('请输入图中的验证码的内容',code)
cs_code = input('请输入验证码>>>:').strip()
if cs_code.upper() == code.upper(): # upper:全部大写 lower:英文小写
print('验证码正确')
3.1 判断字符串中的大小写
res = 'hello world'
print(res.isupper()) # 判断字符串是否是纯大写 False
print(res.islower()) # 判断字符串是否是纯小写 True
3.2 判断字符串是否是纯数字
res = ''
print(res.isdigit()) # sdigit是python的一个函数,主要用于检查是否为数字 False
guess_age = input('guess_age>>>:').strip() # 获取用户输入值
if guess_age.isdigit(): # 判断用户输入值是否是数字
guess_age = int(guess_age) # 如果是
print('年龄', guess_age) # 打印年龄
else:
print('代笔!年龄都不知道怎么输入啊??'))
3.3替换字符串中指定的内容
res = 'my name is jason jason jason jason jason'
print(res.replace('jason', '你想要输入的')) # 前面不变 后面更改
# my name is handsome handsome handsome handsome handsome(输出结果)
print(res.replace('jason', 'tonySB', 1))
# my name is tonySB jason jason jason jason 从左到右替换指定内容
3.4.字符串的拼接
ss1 = 'hello'
ss2 = 'world'
print(ss1 + '$$$' + ss2) # hello$$$world
print(ss1 * 10) # 10遍hello
print('|'.join(['jason', '123', 'read', 'JDB'])) # jason|123|read|JDB 加入到每个字符串
print('|'.join(['jason', 123])) #运行失败 参与拼接的数据值必须都是字符串
3.5 统计指定字符出现的次数
res = 'hello world'
print(res.count('l')) # 3 count:计数
3.6 判断字符串的开头或者结尾
res = 'jason say hello'
res = 'jason say hello'
print(res.startswith('jason')) # True startswith 开头
print(res.startswith('j')) # True
print(res.startswith('jas')) # True
print(res.startswith('a')) # False
print(res.startswith('son')) # False
print(res.startswith('say')) # False
print(res.endswith('o')) # True endswith 结尾
print(res.endswith('llo')) # True
print(res.endswith('hello')) # True
3.7.其他方法补充
res = 'helLO wORld hELlo worLD'
print(res.title()) # Hello World Hello World 每个英文首字母大写
print(res.capitalize()) # Hello world hello world 第一个英文大写
print(res.swapcase()) # HELlo WorLD HelLO WORld 相反 大写的小写 小写的大写
print(res.index('O')) # 找索引值
print(res.find('O') # 实现检索字符串并且输出运算值的意思
print(res.index('c')) # 找不到直接报错
print(res.find('c')) # 找不到默认返回 找不到默认返回-1
print(res.find('LO')) # 也是类似索引值 找到下划线地址
列表内置方法及操作
1. 类型转换
list(其他数据类型)
ps:能够被for循环的数据类型都可以转成列表
print(list('hello world'))
# ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
print(list({'name': 'jason', 'pwd': 123}))
# name pwd 字典也是取k值
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]) # 111
print(l1[-1]) # 888
2.切片操作 与字符串讲解操作一致
print(l1[0:5]) # 111 222 333 444 取范围值1-4
print(l1[:]) # 111, 222, 333, 444, 555, 666, 777, 888
3.间隔数 方向 与字符串讲解操作一致
print(l1[::-1]) # 从尾往首 888 777 666 555 444 333 222 111
4.统计列表中数据值的个数
print(len(l1)) # 8
5.数据值修改
l1[0] = 123 # 123 222 333 ... 定义一个新的列表值
print(l1)
6.列表添加数据值
方式1:尾部追加数据值
l1.append('干饭') # apeend :在对象后面增加
print(l1) # [111, 222, 333, 444, 555, 666, 777, 888, '干饭']
l1.append(['jason', 'kevin', 'jerry'])
print(l1) # [111, 222, 333, 444, 555, 666, 777, 888, ['jason', 'kevin', 'jerry']]
方式2:任意位置插入数据值
l1.insert(0, 'jason') # ['jason', 111, 222, 333, 444, 555, 666, 777, 888]
print(l1) # 加在哪里看索引值的位置
l1.insert(1, [11, 22, 33, 44]) 在1位牵引值添加列表
print(l1) # [111, [11, 22, 33, 44], 222, 333, 444, 555, 666, 777, 888]
方式3:扩展列表 合并列表
ll1 = [11, 22, 33]
ll2 = [44, 55, 66]
print(ll1 + ll2) # [11, 22, 33, 44, 55, 66]
ll1.extend(ll2) # for循环+append
# xtend()函数主要是用于在列表末尾一次性追加另一个序列中的多个值(即用新列表扩展原来的列表
print(ll1) # [11, 22, 33, 44, 55, 66]
for i in ll2: # [11, 22, 33, 44]
ll1.append(i) # [11, 22, 33, 44, 55]
print(ll1) # [11, 22, 33, 44, 55, 66]
7.删除列表数据
方式1:通用的删除关键字del
del l1[0]
print(l1)
方式2:remove
l1.remove(444) # 括号内填写数据值 然后删除444
print(l1) # [111, 222, 333, 555, 666]
方式3:pop
ll1 = [111, 222, 333, 444, 555, 666]
ll1.pop(3) # 括号内填写索引值
print(ll1) # [111, 222, 333, 555, 666]
ll1.pop() # 默认尾部弹出数据值
print(ll1) # [111, 222, 333, 555]
res = ll1.pop(3)
print(res) # 444 pop 可以取出 等新的变量命名
res = ll1.remove(444)
print(res1) # None
8.排序
ss = [54, 99, 55, 76, 12, 43, 76, 88, 99, 100, 33]
ss.sort() # 默认是升序: python中sort() 函数用于对原列表进行排序
print(ss) # [12, 33, 43, 54, 55, 76, 76, 88, 99, 99, 100]
ss.sort(reverse=True)
# “reverse是python一个列表的内置函数,是列表独有的,用于列表中数据的反转,颠倒
print(ss) # 改为降序
# [100, 99, 99, 88, 76, 76, 55, 54, 43, 33, 12]
9.统计列表中某个数据值出现的次数
print(l1.count(111))
10.颠倒列表顺序
ss.reverse()
print(ss) # [33, 100, 99, 88, 76, 43, 12, 76, 55, 99, 54]
可变类型与不可变类型
s1 = '$$jason$$'
l1 = [11, 22, 33 ]
res = s1.strip('$') # jason
print(s1) # $$jason$$
'''字符串在调用内置方法之后并不会修改自己 而是产生了一个新的结果
如何查看调用方法之后有没有新的结果 可以在调用该方法的代码左侧添加变量名和赋值符号
res = s1.strip('$')
'''
print(s1.strip('$')) # jason
ret = l1.append(44) # 在数据最后添加一个数据值
print(l1) # [11, 22, 33, 44]
print(ret) # None
'''列表在调用内置方法之后修改的就是自身 并没有产生一个新的结果'''
可变类型:值改变 内存地址不变
l1 = [11, 22, 33]
print(l1) # [11, 22, 33]
print(id(l1)) # 2750734773384 内存地址
l1.append(44)
print(l1) # [11, 22, 33, 44]
print(id(l1)) # 2750734773384 内存地址不变
不可变类型:值改变 内存地址肯定变
res = '$$hello world$$'
print(res) # $$hello world$$
print(id(res)) # 1624393531568
res1 = res.strip('$')
print(res1) # hello world
print(id(res1)) # 1624393493360
今日作业
1.基于字符串充当数据库完成用户登录(基础练习)
ata_source = 'jason|123'
name, pwd = data_source.split('|') # 分割字符串,再解压赋值
name1 = input('输入你的名字>>>:').strip() # 获取用户输入.strip
pwd1 = input('请输入你的密码>>>:') # 获取用户输入
if pwd1.isdigit(): # 假如用户输入的密码 不是整数
if name == name1 and pwd1 == pwd: # 嵌套 两个数值都满足
print('登录成功')
else:
print('登陆失败')
else: # 重新输入
print('请输入数字!')
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
3.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码'''
ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
#
admin = [] # 定义一个空列表
while True:
print('''添加用户请扣1
查看用户请扣2
删除用户请扣3
退出请按4
''') # 做一个用户界面
add = input('请输入>>>:')
if add == '1':
admin1 = input('输入你要添加的用户>>>:')
admin.append(admin1)
print('添加成功')
elif add == '2':
for i in admin:
print(i)
elif add == '3':
admin2 = input('你要删除谁>>>:')
if admin2 in admin:
admin.remove(admin2)
print('删除成功')
else:
print('没有此用户')
elif add == '4':
print('886')
break
else:
print('输入错误,请重新输入')