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 ...
- 列表&元组的内置方法
标红为元组可以使用
随机推荐
- python2与python区别汇总
目录 输入与输出 range使用区别 字符编码区别 输入与输出 python2与python3中两个关键字的区别 python2中 input方法需要用户自己提前指定数据类型 写什么类型就是什么类型 ...
- UDP协议的网络编程
public class UDPTest { //发送端@Testpublic void sender() throws IOException { DatagramSocket socket = n ...
- JS逆向实战1——某省阳光采购服务平台
分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...
- react的组件通信
react的组件通信 1.父组件传子组件 import React, {Component} from 'react'class Father extends Component{ render() ...
- 记一次线上频繁fullGc的排查解决过程
发生背景 最近上线的一个项目几乎全是查询业务,并且都是大表的慢查询,sql优化是做了一轮又一轮,前几天用户反馈页面加载过慢还时不时的会timeout,但是我们把对应的sql都优化一遍过后,前台响应还是 ...
- docker构建容器时 容器内使用代理
build 容器时 使用代理 demo1 使用前 指定 env 使用后 记得 清空, 否则 会影响 使用容器 时的 网络 cat dockerfile --> FROM jenkins/jenk ...
- Django更换数据库和迁移数据方案
前言 双十一光顾着买东西都没怎么写文章,现在笔记里还有十几篇半成品文章没写完- 今天来分享一下 Django 项目切换数据库和迁移数据的方案,网络上找到的文章方法不一,且使用中容易遇到各类报错,本文根 ...
- 在 Spring 生态中玩转 RocketMQ
本文作者:饶子昊 - Spring Cloud Alibaba Committer,阿里云智能开发工程师. 01 Spring 生态介绍 根据 JVM EcoSystem Report 2021 最新 ...
- python3中的常见知识点2
python3中的常见知识点2 列表与栈和队列 map()函数 python列表遍历的4种方式 参考链接 列表栈和队列 1.列表作为栈使用 栈:先进后出,First In Last Out 使用 ap ...
- 关于解决pip安装python第三方库超时的问题
直接换源下载 1. 设置超时时间,安装txt 文件内安装包 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --default-time ...