python续集
上集回顾
- 数据类型内置方法简介
所有的数据类型基本上都自带了一些操作以及通过点的方式调用自带的方法
- 整型相关操作
类型转换
int()
十进制转其他进制
bin()
oct()
hex()
其他进制转十进制
int()
- 浮点型相关操作
类型转换
float()
python对数字不敏感
- 字符串相关操作
类型转换
str()
字符串必须要掌握的操作
1.索引取值
2.切片操作
3.间隔、方向、步长
4.统计字符串中字符的个数 len()
5.移除字符串首尾指定的字符 strip()lstrip()左rstrip()右
6.安装知道的字符切割字符串 split()rsplit()默认从左往右
7字符串格式化输出 format() f‘{变量名}’
字符串必须要了解的操作
1.带小写相关
upper() lower() isupper() islower()
2.判断字符串中是否是纯数字
isdigit()
3.判断字符串的开头或者结尾
startswith() endswith()
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 = 'ZGL|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
# 定义用户真实数据
data_source = 'ZGL|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.基于列表充当数据库完成zgl用户登录 # 多个用户数据
data_source = ['|123', 'kevin|321','oscar|222']
data_source = ['zgl|123', 'kevin|321', 'oscar|222']
# 1.先获取用户输入的用户名和密码
username = input('username>>>:').strip()
password = input('password>>>>:').strip()
# 2.循环获取列表中每一个真实数据
for data in data_source: # 'zgl|123' 'kevin|321'
real_name, real_pwd = data.split('|') # zgl 123
if username == real_name and password == real_pwd:
print('登录成功')
break
else:
print('用户名或密码错误')
data_source = ['zgl|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.字典必须要掌握的操作
user_dict = {
'username': 'zgl',
'password': 123,
'hobby': ['read', 'music', 'run']
}
# 1.按k取值(不推荐使用)
print(user_dict['username']) # zgl
print(user_dict['phone']) # k不存在会直接报错
# 2.按内置方法get取值(推荐使用)
print(user_dict.get('username')) # zgl
print(user_dict.get('age')) # None
print(user_dict.get('username', '没有')) # zgl 键存在的情况下获取对应的值
print(user_dict.get('phone', '没有哟')) # 键不存在默认返回None 可以通过第二个参数自定义
# 3.修改值数据
print(id(user_dict))
user_dict['username'] = 'tony' # 键存在则修改对应的值
print(id(user_dict))
print(user_dict)
# 4.新增键值对
user_dict['age'] = 18 # 键不存在则新增键值对
print(user_dict)
# 5.删除数据
del user_dict['username']
print(user_dict)
res = user_dict.pop('password')
print(user_dict)
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', 'zgl'), ('password', 123), ('hobby', ['read', 'music', 'run'])])
for i in user_dict.items():
k, v = i
print(k, v)
# 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)
'''当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''
res = user_dict.setdefault('username','tony')
print(user_dict, res) # 键存在则不修改 结果是键对应的值
res = user_dict.setdefault('age',123)
print(user_dict, res) # 存不存在则新增键值对 结果是新增的值
user_dict.popitem() # 弹出键值对 后进先出
元组相关操作
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, 11, 22, 22, 11, 222, 11, 22, 33, 22}
l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
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) # {'jerry', 'oscar'}
# 3.求两个人所有的好友
print(f1 | f2) # {'jason', 'jack', 'tom', 'tony', 'oscar', 'jerry'}
# 4.求两个人各自独有的好友
print(f1 ^ f2) # {'oscar', 'tom', 'jack', 'jerry'}
# 5.父集 子集
print(f1 > f2)
print(f1 < f2)
字符编码理论
该知识点理论特别多 但是结论很少 代码使用也很短
1.字符编码只针对文本数据
2.回忆计算机内部存储数据的本质
3.既然计算机内部只认识01 为什么我们却可以敲出人类各式各样的字符
肯定存在一个数字跟字符的对应关系 存储该关系的地方称为>>>:字符编码本
4.字符编码发展史
4.1.一家独大
计算机是由美国人发明的 为了能够让计算机识别英文
需要发明一个数字跟英文字母的对应关系
ASCII码:记录了英文字母跟数字的对应关系
用8bit(1字节)来表示一个英文字符
4.2.群雄割据
中国人
GBK码:记录了英文、中文与数字的对应关系
用至少16bit(2字节)来表示一个中文字符
很多生僻字还需要使用更多的字节
英文还是用8bit(1字节)来表示
日本人
shift_JIS码:记录了英文、日文与数字的对应关系
韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是自己定制的编码本
不同国家的文本数据无法直接交互 会出现"乱码"
"""
4.3.天下一统
unicode万国码
兼容所有国家语言字符
起步就是两个字节来表示字符
utf系列:utf8 utf16 ...
专门用于优化unocide存储问题
英文还是采用一个字节 中文三个字节
字符编码实操
1.针对乱码不要慌 切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes类型数据.decode()
3.python2与python3差异
python2默认的编码是ASCII
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
python续集的更多相关文章
- Python学习之--socket续集
IO多路复用: I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. 一个很简单的linux例子,select,poll, ...
- python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
简介 上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其 ...
- 第1课(续集),python turtle库的使用
原文再续,书接上一回 上回讲到了,python IDLE的草稿本和作业本,并顺便试了试python的输入输出,变量,运算的体验,大家应该能感受到python的简单了吧. 下面我们继续体验python的 ...
- Python装饰器由浅入深
装饰器的功能在很多语言中都有,名字也不尽相同,其实它体现的是一种设计模式,强调的是开放封闭原则,更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也能装饰其他的对象,比如类,但通常,我们 ...
- 用python做些有意思的事——分析QQ聊天记录
####################################### 已更新续集,戳这里. ######################################## 是这样的,有位学 ...
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...
- [Python]再学 socket 之非阻塞 Server
再学 socket 之非阻塞 Server 本文是基于 python2.7 实现,运行于 Mac 系统下 本篇文章是上一篇初探 socket 的续集, 上一篇文章介绍了:如何建立起一个基本的 sock ...
- 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)
前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
2017年的golang.python.php.c++.c.java.Nodejs性能对比[续] 最近忙,这个话题放了几天,今天来个续集. 上篇传送门: 2017年的golang.python.p ...
随机推荐
- 流式思想概述和两种获取Stream流的方式
流式思想概述 整体来看,流式思想类似于工厂车间的生产流水线 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个模型步骤方案,然后再按照方法去执行他 这张图中展示 ...
- 你的工具包已到货「GitHub 热点速览 v.22.31」
如果你经常用 shell 记得看看本周特推里的 gum,它能给你的 shell 增加新趣味.除了这个 shell kit,我们还有 dashboard kit--tabler,功能技能 kit eng ...
- 6.6 NOI 模拟
\(T1\)括号序列 --那是,朝思夜想也未尝得到的自由 一个比较常见的转化,考虑如何判断前一段和后一段能够拼成一个合法的括号序列 充要条件: 前半部分,'('看为\(1\), ')'看为\(-1\) ...
- linux常见命令(十二)
sed/egrep将order.txt文件按行号展示出来,并删除第2,4行nl order.txt |sed '2,4d'将order.txt文件按行号展示出来,并删除第3行nl order.txt ...
- 43%非常看好TypeScript…解读“2022前端开发者现状报告”
摘要:近日,The Software House 发布了"2022前端开发者现状报告",笔者在此对报告内容进行解读,供大家参考. 本文分享自华为云社区<"2022前 ...
- Luogu3402【模板】可持久化并查集 (主席树)
用\(depth\)按秩合并,不能直接启发,数组开40倍左右 #include <iostream> #include <cstdio> #include <cstrin ...
- ArkUI 组件 Props
在上一篇博客文章中简单地提到了 Props . 在使用 Props 时需要注意到一个点,子组件从寄主页面传递过来的值是单向的,也就是子组件不能直接修改传递下来的值,即单向性. 以上篇文章定义的头像组件 ...
- 逻辑判断与if and while循环结构
逻辑判断与if and while循环结构 逻辑判断 逻辑运算符在进行逻辑判断时遇到打印输出命令时 and 当碰到一个条件为False时那么整个条件即为False,当碰到第一个为True时如果之后的值 ...
- 【AGC】如何快速部署Serverless Url缩短模板
使用场景 Serverless短URL生成模板实现您将在云数据库服务中URL缩短的诉求.使用此模板后,仅需在云数据库服务侧配置长URL值.Serverless短URL生成模板会在后台与Bitly AP ...
- HOSMEL:一种面向中文的可热插拔模块化实体链接工具包
HOSMEL: A Hot-Swappable Modularized Entity Linking Toolkit for Chinese ACL 2022 论文地址:https://aclanth ...