python进阶之路7 数据类型的内置方法
内容回顾
while 循环补充说明
1.死循环
2.while循环嵌套和全局标志位
for循环
1.for 变量名 in 待遍历数据
for循环体代码
2.for 也可以与break continue连用
range方法
1.range()一个数字,0为起始位,顾头不顾尾
2.range()两个数据,第一个数据是起始位
3.range()三个数据,第三个数是等差值
内容详细
1.作业讲解
2.数据类型的内置方法理论
3.整型内置方法与操作
4.浮点型的内置方法与操作
5.字符串的内置方法与操作
6.列表的内置方法与操作
7.可变类型与不可变类型
数据类型的内置方法理论
我们之前所学习的每一种数据类型本身都含有一系列的操作方法内置方法是其中最多的(自带的功能)
在python中数据类型调用内置方法的统一句式为>>>:句点符
'jason'.字符串内置方法
绑定字符串的变量名.字符串内置方法
str.字符串内置方法
ps:数据类型的内置方法比较的多 我们如果想要掌握 不要光靠死记硬背 更多时候靠的是熟能生巧
整型的内置方法与操作
1.类型转换(将其他数据类型转换成整型)
int(其他数据类型)
ps:浮点型可以直接转 字符串必须满足内部是纯数字才可以
2.进制数转换
十进制转其他进制
print(bin(100)) # 0b1100100
print(oct(100)) # 0o144
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自身对数字的敏感度较低(精确的低)
有一篇文章可以参考一下
https://blog.csdn.net/weixin_32821579/article/details/113496501
python这门语言其实真的一点都不厉害 主要是因为它背后有很多大佬
如果需要精准的计算需要借助于模块numpy....
浮点型内置方法与操作
1.类型转换
float(其他数据类型)
字符串里面可以运行出现一个小数点 其他都必须是纯数字
2.pyhton自身对数字的敏感度较低(精确度低)
python这门语言其实真的一点都不厉害 主要是因为它背后有很多大佬
如果需要精准的计算需要借助于模块numpy....
字符串内置方法与操作
1.类型转换
str(其他数据类型)
ps:可以转人员数据类型(只需要在前后加引号即可)
2.必须要掌握的方法
s1 = 'hello world'
2.1索引取值(起始位置0开始 超出范围直接报错)
print(s1[0]) # h
print(s1[-1]) # d 支持负数 从末尾开始
2.2切片操作
print(s1[1:5]) # 顾头不顾尾 从索引1 一直取到索引4
print(s1[-1:-5]) # 默认的顺序是从左往右 不行
print(s1[-5:-1]) # 默认的顺序是从左往右
2.3 修改切片方向(间隔)
print(s1[1:5:1]) # 默认是1
print(s1[1:5:2]) # 第三个数是等差数的间隔
print(s1[-1:-5:-1]) # 改方向
print(s1[:]) # 不写数字就默认都要
print(s1[2:]) # 从索引2开始往后都要
print(s1[:5]) # 从索引0开始往后要到索引4
print(s1[::2]) # 隔两个要一个
2.4统计字符串中所有的字符
print(len(s1)) # 10
2.5移除字符串首尾指定的字符
username = input('username>>>:').strip()
if username == 'jason':
print('登陆成功')
res = 'jason'
print(len(res))
print(len(res.strip())) # 括号内不写 默认移除首尾的空格
res1 = '$$jason$$'
print(res1.strip('$')) # jason
print(res1.lstrip('$')) # jason$$
print(res1.rstrip('$')) # $$jason
2.6 切割字符串中指定的字符
res = 'jason|123|read'
print(res.split('|')) # ['jason', '123', 'read'] 该方法的处理结果是一个列表
name, pwd,hobby = res.split('|')
print(res.split('|',maxsplit=1)) # ['jason', '123|read'] # 从左往右切指定个数
print(res.rsplit('|',maxsplit=1)) # ['jason|123', 'read']
2.7 字符串格式化输出
format玩法1 等价于占位符
res = 'my name is {} my age is {}'.format('jason',123)
print(res) # my name is jason my age is 123
format玩法2 索引取值并支持反复使用
res = 'my name is {0} my age is {1} {1} {1} {0} {1}'.format('jason',123)
print(res)
format 玩法3 占位符 见名知意
res = 'my name is {name} my age is {age}'.format(name='jason',age=123)
print(res) # my name is jason my age is 123
format 玩法4 推荐使用(*****)
name = input('username>>>:')
age = input('age>>>:')
res = f'my name is {name} my age is{age}'
print(res)
3.字符串需要了解的方法
大小写相关
res = 'hEllO wOLd 666'
print(res.upper()) # HELLO WOLD 666
print(res.lower()) # hello wold 666
'''图片验证码: 生成没有大小写统一的验证码 展示给用户看
获取用户输入的验证码 将用户输入的验证码和当初产生的验证码统一转大写或者小写再比对
'''
code = '8Ja6cC'
print('展示给用户看的图片验证吗',code)
confirm_code = input('请输入验证码').strip()
if confirm_code.upper() == code.upper():
print('验证码正确')
res = 'hello world'
print(res.isupper()) # 判断字符串是否是纯大写 False
print(res.islower()) # 判断字符串是否是纯小写 True
3.2 判断字符串中是否是纯数字
res = '123'
print(res.isdigit()) # True
guess_age = input('guess_age>>>:').strip()
if guess_age.isdigit():
guess_age = int(guess_age)
else:
print('年龄都不知道怎么输吗?')
3.3替换字符串中指定的内容
res = 'my name is jason jason jason jason jason'
print(res.replace('jason','tony')) # my name is tony tony tony tony tony
print(res.replace('jason','tony',1)) # my name is tony jason jason jason jason
3.4 字符串的拼接
ss1 = 'hello'
ss2 = 'world'
print(ss1+ss2) # helloworld
print(ss1*10) # hellohellohellohellohellohellohellohellohellohello
print('|'.join(['jason', '123', 'read', 'jdb'])) # jason|123|read|jdb
print('|'.join(['jason', 123])) # 报错 参与拼接的必须都是字符串
3.5 统计指定字符出现的次数
res = 'hello world'
print(res.count('l')) # 3
3.6判断字符串的开头或者结尾
res = 'jason say hello'
print(res.startswith('jason'))
print(res.startswith('j'))
print(res.startswith('jas'))
print(res.startswith('a')) # 报错
print(res.startswith('son')) # 报错
print(res.startswith('say')) # 报错
print(res.endswith('o'))
print(res.endswith('llo'))
print(res.endswith('hello'))
3.7 其他方法补充
res = 'hello world'
print(res.title()) # 每个字母首字母大写
print(res.capitalize()) # 整段首字母大写
print(res.swapcase()) # 把大小写反转
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'))
print(list({'name':'jason', 'pwd':123}))
print(list((1, 2, 3, 4)))
print(list({1, 2, 3, 4, 5}))
2.需要掌握的方法
l1 = [1111, 222, 333, 444, 555, 666, 777, 888]
2.1索引取值(正负数)
print(l1[0])
print(l1[-1])
2.2 切片操作 与字符串讲解操作一致
print(l1[0:5])
print(l1[:])
2.3 间隔数 方向 与字符串讲解操作一致
print(l1[::-1])
2.4 统计列表中数据值的个数
print(len(l1))
l1[0] = 123
print(l1)
2.6 列表添加数据值
方式1: 尾部追加数据值
l1.append('干饭')
print(l1) # [1111, 222, 333, 444, 555, 666, 777, 888, '干饭']
l1.append(['jason', 'kevin', 'jerry'])
print(l1) # [1111, 222, 333, 444, 555, 666, 777, 888, ['jason', 'kevin', 'jerry']]
方式2: 任意位置插入数据值
l1.insert(0,'jason')
print(l1) # ['jason', 1111, 222, 333, 444, 555, 666, 777, 888]
l1.insert(0,[11,22,333,44,])
print(l1) # [[11, 22, 333, 44], 1111, 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
print(ll1) # [11, 22, 33, 44, 55, 66]
2.7 删除列表数据
方式1:统用的删除关键子del
del l1[0]
print(l1)
方式2:内置方法 remove
l1.remove(444)
print(l1)
方式3:pop 弹出元素
l1.pop(3) # 括号内填写索引值
print(l1)
l1.pop() # 默认尾部弹出数据值
print(l1)
res = l1.pop(3)
print(l1) # 444
res1 = l1.remove(444)
print(res1) # None
2.8 排序
ss = [33, 55, 77, 8, 8, 99, 00, 44, 5, 666]
ss.sort()
print(ss) # 默认升序 [0, 5, 8, 8, 33, 44, 55, 77, 99, 666]
ss.sort(reverse=True)
print(ss) # 改为降序
2.9 统计列表中某个数据值出现的次数
print(l1.count(222))
2.10 颠倒列表顺序
l1.reverse()
print(l1)
字典相关操作
1.类型转换
dict()
字典的转换一般不使用关键字 而是自己动手转
2.字典必须要掌握的操作
print(dict([('name','pwd'),('jason',123)])) # {'name': 'pwd', 'jason': 123}
user_dict = {
'username': 'jason',
'password': 123,
'hobby':['read','music','run']
}
1.按k取值
print(user_dict['username']) # 'jason
print(user_dict['phone']) # k不存在会直接报错
2.按内置方法get取值(推荐使用)
print(user_dict.get('username')) # jason
print(user_dict.get('age')) # None
print(user_dict.get('username','没有呦 嘿嘿嘿')) # jason 键存在的情况下获取对应的值
print(user_dict.get('age','没有呦 嘿嘿嘿')) # 没有呦 嘿嘿嘿 键不存在的情况下第二个值
3.修改值数据
user_dict['username'] = 'tony'
print(user_dict) # {'username': 'tony', 'password': 123, 'hobby': ['read', 'music', 'run']}
print(id(user_dict))
print(user_dict)
4.新增键值对
user_dict['age'] = 18 # 键不存在则新增键值对
print(user_dict)
5.删除数据
del user_dict['username']
print(user_dict) # {'password': 123, 'hobby': ['read', 'music', 'run']}
res = user_dict.pop('password')
print(user_dict) # {'username': 'jason', 'hobby': ['read', 'music', 'run']}
print(res) # 123
6.统计字典中键值对的个数
print(len(user_dict)) # 3
7.字典三剑客
print(user_dict.keys()) # 一次性获取字典所有的键 dict_keys(['username', 'password', 'hobby'])
print(user_dict.values()) # 一次性获取字典所有的值 dict_values(['jason', 123, ['read', 'music', 'run']])
print(user_dict.items()) # 一次性获取字典的键值对数据 # dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'music', 'run'])])
for k,v in user_dict.items():
print(k,v)
username jason
password 123
hobby ['read', 'music', 'run']
8.补充说明
print(dict.fromkeys(['name', 'pwd', 'hobby'], 123)) # 快速生成值相同的字典
res = dict.fromkeys(['name', 'pwd', 'hobby'], [])
print(res) # {'name': [], 'pwd': [], 'hobby': []}
res['name'].append('jason')
res['pwd'].append(123)
res['hobby'].append('study')
print(res) # {'name': ['jason', 123, 'study'], 'pwd': ['jason', 123, 'study'], 'hobby': ['jason', 123, 'study']}
'''
当第二个公共值是可变类型 的时候一定要注意 通过任何一个键修改都会影响所有
'''
user_dict.setdefault('username','tony')
print(user_dict) # 键存在则不修改 结果是键对应的值
res = user_dict.setdefault('age',123)
print(user_dict,res) # 键不存在则新增键值对结果是新增的值
user_dict.popitem() # 弹出键值对 后进先出
print(user_dict)
元组相关操作
1.类型转换
tuple()
ps:支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法
t1 = (11,22,33,44,55,66)
1.索引取值
2.切片操作
3.间隔 、方向
4.统计元组内数据值的个数
print(len(t1)) # 6
5.统计元组内某个数据值出现的次数
print(t1.count(11))
6.统计元组内指定数据值的索引值
print(t1.index(22))
7元组内如果只有一个数据值那么逗号不能少
8.元组内索引绑定的内存地址不能被修改(部分区分 可变与不可变)
9.元组不能新增或删除数据
集合相关操作
1.类型转换
set()
集合内数据必须是不可变类型(整型 浮点型 字符串 元组)
集合内数据也是无序的 没有索引的概念
2.集合需要掌握的方法
去重
关系运算
ps:只有遇到上述两种需求的时候才应该考虑使用集合
3.去重
s1 = {11,22,33,4,4,55,5,566,7,44,4,4,44,4,4,}
print(s1)
l1 = [11,22,33,22,33,22,11,11,22,33,22,22,11,11]
s1 =set(l1)
l1 = list(s1)
print(l1)
4.关系运算
群体之间做差异化校验
eg:两个微信账户之间 有不同的好友 有相同的好友
f1 = {'jason','tony', 'jerry', 'oscar'} # 用户1的好友列表
f2 = {'jack', 'jason','tom','tony'} # 用户2的 好友列表
1.求两个人的共同好友
print(f1 & f2) # {'jason', 'tony'}
2.求用户1 独有的好友
print(f1 - f2) # {'oscar', 'jerry'}
3.求两个人所有的好友
print(f1 | f2) # {'tony', 'oscar', 'tom', 'jerry', 'jason', 'jack'}
4. 求两个人各自独有的好友
print(f1 ^ f2) # {'oscar', 'tom', 'jerry', 'jack'}
5.父集 子集
print(f1 > f2) # False
print(f2 < f1) # False
可变类型与不可变类型
s1 = '$$jason$$'
l1 = [11,22,33]
print(s1.strip('$'))
'''
字符串在调用内置方法之后并不会修改自己 而是产生了一个新的结果
如何查看调用方法之后有没有新的结果 可以在调用该方法的代码左侧添加变量名和赋值符号
'''
l1.append(44)
print(l1) # [11, 22, 33, 44]
ret = l1.append(44)
print(ret) # None
'''
列表在调用内置方法之后修改的就是自身 并没有产生一个新的结果
如何查看调用方法之后有没有新的结果 可以在调用该方法的代码左侧添加变量名和赋值符号
'''
可变类型: 值改变 内存地址不变
l1 = [11,22,33]
print(l1)
print(id(l1))
l1.append(44)
print(l1)
print(id(l1))
不可变类型: 值改变 内存地址肯定变
res = '$$hello world$$'
print(res)
print(id(res))
res.strip('$')
print(res)
print(id(res))
作业
1.整理今日内容及博客
每个内置方法一定要自己动手写案例 查看效果
2.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
data_source = 'jason|123' # 一个用户数据
# 获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
data_source = 'jason|123'
username = input('username>>>:').strip()
if len(username) == '0':
print('用户名不能为空')
password = input('password>>>:').strip()
if len(username) =='0':
print('用户名不能为空')
name, pwd = data_source.split('|')
if username == name and password == pwd:
print('登陆成功')
else:
print('用户名或密码错误')
3.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
data_source = ['jason|123', 'kevin|321','oscar|222']
# 获取用户名和密码
username = input('username>>>:').strip()
if len(username) == '0':
print('用户名不能为空')
password = input('password>>>:').strip()
if len(username) =='0':
print('用户名不能为空')
for j in data_source:
real_name, real_pwd = j.split('|')
if username == real_name and password == real_pwd:
print('登陆成功')
break
else:
print('用户名或密码不正确')
4.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码'''
ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
# 定义一个空列表
data_list = []
while True:
print("""
1.添加用户名
2.查看所有用户名
3.删除指定用户名
""")
# 获取用想要执行的功能编号
choice_num = input('请输入执行的功能编号>>>:').strip()
# 5.根据不同的功能编号执行不同的分支代码
if choice_num == '1':
# 6.获取用户输入的用户吗
username = input('请输入需要添加的用户名>>>:').strip()
# 7.限制用户名不能重复 判断当前用户名是否已存在
if username in data_list:
print('用户名已存在')
else:
# 8.列表添加用户名
data_list.append(username)
print(f'用户名{username}添加成功')
elif choice_num == '2':
# 9.循环打印每一个用户数据
for name in data_list:
print(f"""
---------user info------
用户名:{name}
-----------end----------
""")
elif choice_num == '3':
# 获取用户想要删除的用户名
delete_username = input('输入需要删除的用户名>>>:').strip()
# 10.获取用户想要删除的用户名
if delete_username in data_list:
# 11.先判断用户名是否存在
data_list.remove(delete_username)
print(f'用户名{delete_username}删除成功')
else:
print('员工姓名不存在,无法删除')
else:
print('抱歉,暂时没有您想要执行的功能编号')
python进阶之路7 数据类型的内置方法的更多相关文章
- python 入门基础4 --数据类型及内置方法
今日目录: 零.解压赋值+for循环 一. 可变/不可变和有序/无序 二.基本数据类型及内置方法 1.整型 int 2.浮点型float 3.字符串类型 4.列表类型 三.后期补充内容 零.解压赋值+ ...
- day6 基本数据类型及内置方法
day6 基本数据类型及内置方法 一.10进制转其他进制 1. 十进制转二进制 print(bin(11)) #0b1011 2. 十进制转八进制 print(hex(11)) #0o13 3. 十进 ...
- while + else 使用,while死循环与while的嵌套,for循环基本使用,range关键字,for的循环补充(break、continue、else) ,for循环的嵌套,基本数据类型及内置方法
今日内容 内容概要 while + else 使用 while死循环与while的嵌套 for循环基本使用 range关键字 for的循环补充(break.continue.else) for循环的嵌 ...
- Day 07 数据类型的内置方法[列表,元组,字典,集合]
数据类型的内置方法 一:列表类型[list] 1.用途:多个爱好,多个名字,多个装备等等 2.定义:[]内以逗号分隔多个元素,可以是任意类型的值 3.存在一个值/多个值:多个值 4.有序or无序:有序 ...
- if循环&数据类型的内置方法(上)
目录 if循环&数据类型的内置方法 for循环 range关键字 for+break for+continue for+else for循环的嵌套使用 数据类型的内置方法 if循环&数 ...
- wlile、 for循环和基本数据类型及内置方法
while + else 1.while与else连用 当while没有被关键字break主动结束的情况下 正常结束循环体代码之后执行else的子代码 """ while ...
- while和for循环的补充与数据类型的内置方法(int, float, str)
目录 while与for循环的补充 while + else 死循环 while的嵌套 for补充 range函数 break与continue与else for循环的嵌套 数据类型的内置方法 int ...
- python学习day7 数据类型及内置方法补充
http://www.cnblogs.com/linhaifeng/articles/7133357.html#_label4 1.列表类型 用途:记录多个值(一般存放同属性的值) 定义方法 在[]内 ...
- python入门之数据类型及内置方法
目录 一.题记 二.整形int 2.1 用途 2.2 定义方式 2.3 常用方法 2.3.1 进制之间的转换 2.3.2 数据类型转换 3 类型总结 三.浮点型float 3.1 用途 3.2 定义方 ...
- python之数据类型的内置方法(set、tuple、dict)与简单认识垃圾回收机制
目录 字典的内置方法 类型转换 字典取值 修改值 计算字典长度 成员运算 删除元素 获取元素 更新字典 快速生成字典 setdefault()方法 元组的内置方法 类型转换 索引与切片操作 统计长度 ...
随机推荐
- wampServer配置WWW根目录遇到的坑
直接在官网下载之后开始安装,一切正常 打开使用,一切正常 设置WWW目录.坑了一波 按照的都是百度上的教程,设置httpd.conf 这里配置之后网页访问127.0.0.1 还是localhost都还 ...
- 6.channels 配置websocket
Django默认不支持websockey,需要Django支持的话需要安装第三方组件 django channels 是django支持websocket的一个模块. 1.安装 pip3 in ...
- DevOps | 如何快速提升团队软件开发成熟度,快速提升研发效能?
今天一个小伙伴问我,如何「快速提升」一个团队的软件开发成熟度?我犯难了.我个人理解一个团队的软件开发成熟度涉及的东西很多,但最简单最直接的方法就是发钱涨工资,可是估计很多公司不愿意,那就只有扣了. 快 ...
- 【原创】在RT1050 LittleVgl GUI中嵌入中文输入法框架
时隔一年多终于又冒泡了,哎,随着工作越来越忙,自己踏实坐下来写点东西真是越来越费劲,这篇文章也是准备了好久好久才打算发表出来(不瞒大家,东西做完好久了,文章憋了一年了,当真"高产" ...
- 实验6:开源控制器实———RYU
一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...
- PyGame做了一个扫雷
1 # 这是一个示例 Python 脚本. 2 3 # 按 ⌃R 执行或将其替换为您的代码. 4 # 按 双击 ⇧ 在所有地方搜索类.文件.工具窗口.操作和设置. 5 import sys 6 imp ...
- SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)
1.安装erlang语言环境 1.1 创建 erlang安装目录 mkdir erlang 1.2 上传解压压缩包 上传到: /root/ 解压缩# tar -zxvf otp_src_22.0.ta ...
- 洛谷 P6573 [BalticOI 2017] Toll 题解
Link 算是回归OI后第一道自己写的题(考CSP的时候可没回归) 写篇题解纪念一下 题目大意: \(n\) 个点,\(m\) 条单向边,每条边的两端点 \(x\),\(y\)必定满足 \(\left ...
- 我要涨知识 —— TypeScript 常见面试题(一)
1.ts 中的 any 和 unknown 有什么区别? unknown 和 any 的主要区别是 unknown 类型会更加严格:在对 unknown 类型的值执行大多数操作之前,我们必须进行某种形 ...
- 【转】Linux文件权限
转载一篇写得非常详细的linux文件权限,方便自己查阅! 转载来源:https://www.cnblogs.com/keyi/p/8124841.html ---------------------- ...