python进阶之路8 字典、元组、集合内置方法 编码理论
内容回顾
作业讲解
1.前期不熟练的情况下一定要先写注释
2.一定要仔细思考每一行代码的含义
3.自己不会的代码或者不熟练的代码一定要多敲多练
数据类型内置方法简介
所有的数据类型基本上都自带了一些操作以及通过点的方式调用自带的方法
整型相关操作
类型转换
int()
十进制转其他进制
bin()
oct()
hex()
其他进制转十进制
int()
浮点型相关操作
类型转换
float()
"""
python对数字不敏感
"""
字符串相关操作
类型准换
str()
字符串必须要掌握的操作
1.索引取值
2.切片操作
3.间隔、方向、步长
4.统计字符串中字符的个数 len()
5.移除字符串首尾指定的字符 strip() lstrip() rstrip()
6.按照指定的字符切割字符串
7.字符串格式化输出 format() f'{变量名}'
字符串必须要了解的操作
1.大小写相关
upper() lower() isupper() islower()
2.判断字符串中是否是纯数字
isdigit()
3.判断字符串的开头或者结尾
startwith() endwith()
4.统计字符串中字符出现的次数
count()
5.替换字符串中指定的字符
replace()
6.字符串拼接
join() +
7.索引相关操作
index() find()
8.补充操作
title() swapcase()
列表相关操作
类型转换
list()
必须要掌握的操作
1.索引取值
2.切片操作
3.间隔 方向 步长
4.统计列表中数据值的个数 len()
5.索引修改数据值 l1[0] = 值
6.列表添加数据值 append() insert() extend() +
7.列表删除数据值 del l1[0] remove() pop()
8.排序 sort()
9.翻转 reverse()
10.统计列表中数据值出现的次数 count()
可变与不可变类型
可变类型
值改变 内存地址不变
不可变类型
值改变 内存地址肯定变
内容概要
- 作业讲解
- 字典相关操作
- 元组相关操作
- 集合相关操作
- 字符编码(理论)
内容详细
作业讲解
1.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
# 定义用户真实数据
data_source = 'jason|123'
# 1.获取用户名和密码
username = input('username>>>:').strip()
password = input('password>>>>:').strip()
# 2.切割字符串 获取真实用户名和密码
real_name, real_pwd = data_source.split('|')
# 3.校验用户名和密码是否正确
if username == real_name and password == real_pwd:
print('登录成功')
else:
print('用户名或密码错误')
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
data_source = ['jason|123', 'kevin|321', 'oscar|222']
# 1.先获取用户输入的用户名和密码
username = input('username>>>:').strip()
password = input('password>>>>:').strip()
# 2.循环获取列表中每一个真实数据
for data in data_source: # 'jason|123' 'kevin|321'
real_name, real_pwd = data.split('|') # jason 123
if username == real_name and password == real_pwd:
print('登录成功')
break
else:
print('用户名或密码错误')
data_source = ['jason|123', 'kevin|321', 'oscar|222']
username = input('username>>>:').strip()
password = input('password>>>:').strip()
user_data = f'{username}|{password}' # username + '|' + password
if user_data in data_source:
print('登录成功')
else:
print('用户名或密码错误')
3.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码'''
ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
# 1.先定义一个专门存储用户名的列表
data_list = []
# 2.添加循环结构
while True:
# 3.先打印项目功能 供用户选择
print("""
1.添加用户
2.查看用户
3.删除用户
""")
# 4.获取用户想要执行的功能编号
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}
------------------------------
""")
elif choice_num == '3':
# 10.获取用户想要删除的用户名
delete_username = input('请输入您想要删除的用户名>>>:').strip()
# 11.先判断用户名是否存在
if delete_username in data_list:
data_list.remove(delete_username)
print(f'用户名{delete_username}删除成功')
else:
print('你个傻帽 用户名不存在 删毛线啊!!!')
else:
print('很抱歉 暂时没有您想要执行的功能编号')
字典相关操作
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
字符编码理论
该知识点理论特别多 但是结论很少 代码使用也很短
1.字符编码只针对文本数据
2.会议计算机内部存储数据的本质
3.既然计算机内部只认识01 为什么我们却可以敲出人类各式各样的字符
肯定存在一个数字跟字符的对应关系 存储该关系的地方称为>>>:字符编码本
4.字符编码发展史
4.1一家独大
计算机是由美国人发明的,为了能够让计算机识别英文
需要发明一个数字跟英文字母的对应关系
ASCII码:记录了英文字母跟数字的对应关系
用8bit(字节)来表示一个英文字符
4.2群雄割据
中国人
GBK码:记录了英文、中文与数字的对应关系
用至少16bit(2字节)来表示一个中文字符
很多生僻字还需要使用更多的字节
英文还是用8bit(1字节)来表示
日本人
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是字节定制的编码本
不同的国家的文本数据无法直接交互 会出现"乱码"
"""
4.3天下一统
unicode 万国码
兼容所有国家语言字符
起步就是两个字节来表示字符
utf系列 :utf8 utf16 ...
专门用于优化unicode存储问题
英文还采用一个字节 中文三个字节
字符编码实操
1.针对乱码不要慌 切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码: 将计算机能够读懂的数据按照指定的编码编码成人能够读懂
bytes类型数据.decode()
3.python2与python3差异
python2默认的编码ASCII
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
python进阶之路8 字典、元组、集合内置方法 编码理论的更多相关文章
- python之字符串,列表,字典,元组,集合内置方法总结
目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...
- 元组/字典/集合内置方法+简单哈希表(day07整理)
目录 二十三.元组内置方法 二十四.字典数据类型 二十五 集合内置方法 二十五.数据类型总结 二十六.深浅拷贝 补充:散列表(哈希表) 二十三.元组内置方法 什么是元组:只可取,不可更改的列表 作用: ...
- Python基础部分:10、数据类型的内置方法和字符编码
目录 一.数据类型内置方法 1.字典dict内置方法 1.1.类型转换 2.字典必须要掌握的方法 2.1.取值方式 2.2.修改内部数据值 2.3.删除数据 2.4.统计字典中键值对个数 2.5.字典 ...
- python 入门基础21 --面向对象_多态、内置方法、反射
内容: 1.接口思想 2.抽象类思想 3.多态 4.内置方法 5.反射 1.接口思想 建立关联的桥梁,方便管理代码 接口类:用来定义功能的类,位继承它的子类提供功能 该类的功能方法一般不需要实现体,实 ...
- python day21 ——面向对像-反射 getattr,内置方法
一.反射:用字符串数据类型的变量名来访问这个变量的值 上代码^_^ # class Student: # ROLE = 'STUDENT' # @classmethod # def check_cou ...
- Python面向对象 --- 类的设计和常见的内置方法
面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...
- 小白基础Python重要的字符串详解String的内置方法
String的内置方法: st='hello world {name} is {age}' {} 特殊内容需要识别format print(st.count('1')) 统计元素个数 print ...
- python字典操作和内置方法
一 字典基本介绍 python中只有字典是映射结构,通过key取值,并且key是不可变数据类型,而value可以是任意数据类型. 字典通过一个花括号,里面存放key:value的数据结构来定义.理论上 ...
- python中的集合内置方法小结
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- #集合性质:需要传入一个list,且不含重复的元素,无序 list_1=[1,2,1,4,5,8,3,4 ...
- 列表&元组的内置方法
标红为元组可以使用
随机推荐
- RAID5 IO处理之对齐读代码详解
1 总体流程 当一个读请求的覆盖范围落在一个chunk范围内时为对齐读,流程图如下所示: 2 入口 在RAID5的IO处理函数 make_request() 一开始进行了对齐读的判断和处理,代码如下所 ...
- .Net Core中获取appsettings.json中的节点数据
获取ConnectionStrings节点数据 //appsettings.json { "ConnectionStrings": { //DEV "DbConn&quo ...
- 「MySQL高级篇」MySQL之MVCC实现原理&&事务隔离级别的实现
大家好,我是melo,一名大三后台练习生,死去的MVCC突然开始拷打我! 引言 MVCC,非常顺口的一个词,翻译起来却不是特别顺口:多版本并发控制. 其中多版本是指什么呢?一条记录的多个版本. 并发控 ...
- kafka-consumer-groups 命令行工具使用手册
kafka-consumer-groups 命令行工具使用手册 该手册原文出自 $KAFKA_HOME\bin\windows\kafka-consumer-groups.bat --help 命令的 ...
- php 程序员进化之路
1.目标明确 2.消除干扰 3.自我激励 鸟哥 --2018年11月17日php年会
- 27、求解n阶多项式的值,多项式公式如下
/* 求解n阶多项式的值,多项式公式如下: Pn(x) = 1 n=0; = x n = 1; = (2n - 1)xPn-1(x) - (n - 1)Pn-2(x) n>=2 */ #incl ...
- MyBatis-Plus 分页插件过时
引用:https://blog.csdn.net/zyw562123314/article/details/108903456//分页插件老版本过时 旧版本配置 @Bean public Pagina ...
- win7使用onedrive右键托盘图标中文不显示问题
前言 win7 用的 onedrive不能在微软官网下载,用不了,所以需要下载 win7可以使用的版本. onedrive_for_win7.exe 解决问题 重启电脑解决 其他 我看贴吧说是文本放大 ...
- combotree 的简单使用
一.前端 combotree HTML: <input id="201711281652407353448711985811" class="easyUI-comb ...
- html CheckBox
1.获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[type='checkbox']: ...