一. 回顾上周所有内容
一. python基础

  1. Python是一门解释型. 弱类型语言
  2. print("内容", "内容", end="\n") 打印语句
  3. 变量: 程序运行过程中产生的中间值. 存储在内存中.供后面的程序调用
  4. 变量的数据类型:

    int, 整数

str, 字符串

bool, True,False

  5. 命名规则:

  1. 由数字,字母,下划线组成
  2. 不能是纯数字或者数字开头
  3. 不能是关键字
  4. 不能太长
  5. 要有意义
  6. 不要用中文
  7. 区分大小写
  8. 推荐使用驼峰和下划线命名
  9. input() 用户输入
  10. if 判断

if 条件:
代码块
else:
代码块

if 条件:
代码块
elif 条件2:
代码块
..
else:
二. while循环
while 条件:
循环体
else:
代码块
流程:
判断条件是否为真. 如果真.执行循环体. 再次判断条件是否真. ....直到条件为假. 执行else. 退出循环

break 直接打断循环.
continue 停止当前本次循环. 继续执行下一次循环

格式化输出:
%s 字符串
%d 数字

运算符:
逻辑运算
1. and. 两端同时为真. 结果才是真.
2. or 或者. 两端有一个是真. 结果就是真
3. not 取反.

() => not => and => or
x or y
如果x非零, x, 否则 y

编码:

  1. ASCII. 8bit, 1byte
  2. GBK, 16bit, 2byte
  3. unicode, 32bit,4byte
  4. UTF-8, 英文:8bit, 1byte, 欧洲: 16bit, 2byte, 中文: 24bit, 3byte

3. 基本数据类型

  1. int 数字. bit_length() 二进制长度
  2. bool 空:False, 非空:True
  3. str, 字符串不可变

索引切片: 由0开始
[起始位置: 结束位置: 步长]
操作:

  1. upper() 变成大写
  2. strip() 去掉空格(两端)
  3. replace() 替换
  4. split() 切割
  5. startswith() 以xxx开头(判断)
  6. find() 找xxx字符串在原字符串中出现的索引位置. 找不到返回-1
  7. count() 数数
  8. format() 格式化输出
  9. len() 求长度

4. 列表:
由[]表示
有索引和切片
常用操作:
增加:append(), insert(), extend()
删除:pop() remove() del, clear()
修改:索引切片修改
查询:
for 变量 in 可迭代对象:
循环体
else:

操作:
sort(reverse=True) 排序
reverse() 翻转
len() 长度
count() 数数

元组:
tuple, 只读列表, 由()组成. 不可变的
索引和切片. for循环

解构, 解包
a, b = 1, 2

range(10) 0-9
range(5, 10) 5-9
range(5,10,3) 5,8

5. dict 字典
由{}表示. 存储key:value 键值对. 根据key来计算hash值.找到对应的内存地址.
key必须是可hash的. 不可变的. int, str, 元组, bool

操作:
增加: dict[key] = value
setdefault(key, value)
删除: pop(key), del , popitems(), clear()
修改: dict[key] = value
查询:dict[key], get(key, 默认值),
setdefault() 先执行新增那个流程. 然后.获取到key对应的值

常规操作:
keys() 获取所有的key.返回的像个列表
values() 获取所有value
items() 获取所有的key,value.装成元组. 返回列表[(key,value), (key,value)]

通过items()获取的是k,v
for k,v in dict.items():

直接循环遍历. 拿到的是key
for k in dict:


二. 今日主要内容

1. is 和 == 区别
id()函数
== 判断两边的值
is 判断内存地址
回顾编码:
1. ASCII: 英文, 特殊字符, 数字, 8bit, 1byte
2. GBK: 中文 16bit, 2byte. 兼容ASCII
3. unicode: 万国码, 32bit 4byte. 兼容ASCII
4. UTF-8: 长度可变的unicode. 英文:8bit, 欧洲:16bit, 中文:24bit 3byte

python2 只能用ASCII
python3 有unicode, 默认的编码就是unicode
内存里用的是unicode. 硬盘和网络传输用的是utf-8或者GBK

2. encode() 编码. 获取到的是编码之后的结果. bytes
3. decode() 解码. 把bytes编程我们熟悉的字符串


06. 万恶之源-再谈编码
本节主要内容:

  1. is和==的区别
  2. 编码的问题

⼀. is和==的区别
1. id()
通过id()我们可以查看到⼀个变量表⽰的值在内存中的地址

   s = "alex 是 大 xx"abc = id(s)   # 得到内存地址print(abc)lst = ["大阳哥", "佳琪哥", "小花生", "燃哥"]print(id(lst))  # 就是一个内存地址. 毫无意义lst = ["周杰伦", "燃哥"]lst1 = ["周杰伦", "燃哥"]print(id(lst))print(id(lst1))s = "燃哥"s1 = "燃哥"# 小数据池. 会对字符串进行缓存, 为了节省内存print(id(s))print(id(s1))tu = ("燃哥", "周杰伦")tu1 = ("燃哥", "周杰伦")print(id(tu), id(tu1))dic = {"a": "b", "c":"d"}dic1 = {"a": "b", "c":"d"}print(id(dic), id(dic1))a = 10b = 10print(id(a), id(b))布尔也有,a = Trueb = Trueprint(id(a), id(b))-5a = 257b = 257print(id(a), id(b))a = "小威"b = "小威"print(id(a), id(b))1. id() 查看内存地址2. str 有小数据池的== is id== 判断. 左右两端是否相等和一致, 比较的是内容is 判断. 判断的是内存地址  id()的值来判断    内存地址lst = ["马化腾", "小威"]lst2 = ["马化腾", "小威"]print(lst == lst2)  # Trueprint(lst is lst2)  # Falses = "alex"print("1111111111")print("1111111111")print("1111111111")print("1111111111")print("1111111111")print("1111111111")print("1111111111")print("1111111111")print("1111111111")s2 = "alex"print(s == s2) # Trueprint(s is s2)  # True. 小数据池s1 = "@akljflkasdjklfjkasdlfjklsdajfklsdajfklasdjkflasdjklfjsdaklfjsdakljfklasdjfklsdajfklsdajfklsdajklfsjadklfjsadklfjasdkljfklsdjfklsdjfklsdjfklsdjfklasdjfklasdjklfjasdklakljflkasdjklfjkasdlfjklsdajfklsdajfklasdjkflasdjklfjsdaklfjsdakljfklasdjfklsdajfklsdajfklsdajklfsjadklfjsadklfjasdkljfklsdjfklsdjfklsdjfklsdjfklasdjfklasdjklfjasdkl"s2 = "@akljflkasdjklfjkasdlfjklsdajfklsdajfklasdjkflasdjklfjsdaklfjsdakljfklasdjfklsdajfklsdajfklsdajklfsjadklfjsadklfjasdkljfklsdjfklsdjfklsdjfklsdjfklasdjfklasdjklfjasdklakljflkasdjklfjkasdlfjklsdajfklsdajfklasdjkflasdjklfjsdaklfjsdakljfklasdjfklsdajfklsdajfklsdajklfsjadklfjsadklfjasdkljfklsdjfklsdjfklsdjfklsdjfklasdjfklasdjklfjasdkl"print(id(s1), id(s2))s = "abc中def"print(s.title())

⼩数据池(常量池): 把我们使⽤过的值存储在⼩数据池中.供其他的变量使⽤.
⼩数据池给数字和字符串使⽤, 其他数据类型不存在.
对于数字: -5~256是会被加到⼩数据池中的. 每次使⽤都是同⼀个对象.
对于字符串:

  1. 如果是纯⽂字信息和下划线. 那么这个对象会被添加到⼩数据池
  2. 如果是带有特殊字符的. 那么不会被添加到⼩数据池. 每次都是新的
  3. 如果是单⼀字⺟*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加到⼩数据池中

注意(⼀般情况下): 在py⽂件中. 如果你只是单纯的定义⼀个字符串. 那么⼀般情况下都是会
被添加到⼩数据池中的. 我们可以这样认为: 在使⽤字符串的时候, python会帮我们把字符串
进⾏缓存, 在下次使⽤的时候直接指向这个字符串即可. 可以节省很多内存.
这个问题千万不要纠结. 因为官⽅没有给出⼀个完美的结论和定论.所以只能是⾃⼰摸索.
以下内容摘⾃官⽹中关于id()的描述
Return the “identity” of an object. This is an integer which is
guaranteed to be unique and constant for this object during its
lifetime. Two objects with non-overlapping lifetimes may have the
same id() value.
CPython implementation detail: CPython implementation detail: This is the address of the object in
memory.
说了这么多. 这个id()和is有什么关系呢. 注意. is比较的就是id()计算出来的结果. 由于id是帮我
们查看某数据(对象) 的内存地址. 那么is比较的就是数据(对象)的内存地址.
最终我们通过is可以查看两个变量使⽤的是否是同⼀个对象.
== 双等表⽰的是判断是否相等, 注意. 这个双等比较的是具体的值.⽽不是内存地址

总结:
is 比较的是地址
== 比较的是值
二. 编码的补充
1. python2中默认使⽤的是ASCII码. 所以不⽀持中⽂. 如果需要在Python2中更改编码.
需要在⽂件的开始编写:

2. python3中: 内存中使⽤的是unicode码.

编码回顾:
1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂,
8个01代码, 8个bit, 1个byte
2. GBK: 中⽂国标码, ⾥⾯包含了ASCII编码和中⽂常⽤编码. 16个bit, 2个byte
3. UNICODE: 万国码, ⾥⾯包含了全世界所有国家⽂字的编码. 32个bit, 4个byte, 包含了
ASCII
4. UTF-8: 可变⻓度的万国码. 是unicode的⼀种实现. 最⼩字符占8位
1.英⽂: 8bit 1byte
2.欧洲⽂字:16bit 2byte
3.中⽂:24bit 3byte

综上, 除了ASCII码以外, 其他信息不能直接转换.
在python3的内存中. 在程序运⾏阶段. 使⽤的是unicode编码. 因为unicode是万国码. 什么内
容都可以进⾏显⽰. 那么在数据传输和存储的时候由于unicode比较浪费空间和资源. 需要把
unicode转存成UTF-8或者GBK进⾏存储. 怎么转换呢. 在python中可以把⽂字信息进⾏编码.
编码之后的内容就可以进⾏传输了. 编码之后的数据是bytes类型的数据.其实啊. 还是原来的
数据只是经过编码之后表现形式发⽣了改变⽽已.
bytes的表现形式:
1. 英⽂ b'alex' 英⽂的表现形式和字符串没什么两样
2. 中⽂ b'\xe4\xb8\xad' 这是⼀个汉字的UTF-8的bytes表现形式
字符串在传输时转化成bytes=> encode(字符集)来完成

    s = "alex马"想要存储.必须进行编码encode() 编码之后的内容是bytes类型的数据30个字节 10个字. 每个字3个字节b'\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a\xe7\x9a\x84\xe5\x84\xbf\xe5\xad\x90\xe8\xa2\xab\xe7\xbb\x91\xe6\x9e\xb6\xe4\xba\x86'bs = s.encode("UTF-8")   # 把字符串编码成UTF-8的形式print(bs)#英文:编码之后的结果是英文本身#中文:编码之后UTF-8 下. 一个中文3个字节

记住: 英⽂编码之后的结果和源字符串⼀致. 中⽂编码之后的结果根据编码的不同. 编码结果
也不同. 我们能看到. ⼀个中⽂的UTF-8编码是3个字节. ⼀个GBK的中⽂编码是2个字节.
编码之后的类型就是bytes类型. 在⽹络传输和存储的时候我们python是保存和存储的bytes
类型. 那么在对⽅接收的时候. 也是接收的bytes类型的数据. 我们可以使⽤decode()来进⾏解
码操作. 把bytes类型的数据还原回我们熟悉的字符串:

s = "饿了么"
bs = s.encode("GBK")    # b'\xb6\xf6\xc1\xcb\xc3\xb4' GBK 一个中文:2个字节
print(bs)s = "中"
print(s.encode("utf-8"))
print(s.encode("GBK"))decode()解码

编码和解码的时候都需要制定编码格式.

bs = b'\xb6\xf6\xc1\xcb\xc3\xb4'    # 从别人那里读到的   GBK
# # 编程人认识的东西
s = bs.decode("GBK")    # 解码之后是字符串, 用什么编码就用什么解码
# print(s)# GBK => utf-8
bs = b'\xb6\xf6\xc1\xcb\xc3\xb4'
# 先解码成unicode字符串
s = bs.decode("GBK")
# 在把字符串编码成UTF-8
bss = s.encode("UTF-8")
print(bss)

作业:

一,老男孩好声⾳选秀⼤赛评委在打分的时候呢, 可以进⾏输入. 假设, 老男孩有10个评委.
让10个评委进⾏打分, 要求, 分数必须⼤于5分, ⼩于10分.
count = 1
while count <= 10:score = int(input("请%s号评委为选手打分: " % count))if score <= 5 or score > 10:print("分数必须⼤于5分, ⼩于10分! 请重新打分")continuecount=count + 1
二. 电影投票. 程序先给出⼀个⽬前正在上映的电影列表. 由⽤户给每⼀个电影投票.
最终 将该⽤户投票信息公布出来 lst = ['⾦瓶梅', '解救吾先⽣', '美国往事', '⻄⻄⾥的美丽传说']
结果: {'⾦瓶梅': 99, '解救吴先⽣': 80, '美国往事': 6, '⻄⻄⾥的美丽传说': 23}
dic = {}
ml = ['⾦瓶梅', '解救吾先⽣', '美国往事', '⻄⻄⾥的美丽传说']
ms = [0, 0, 0, 0]
for i in range(len(ml)):print('%s号电影: %s' % ((i+1), ml[i]))
while 1 :inp = input("请输入你喜欢的电影编号: ")if inp.upper() == 'Q':breaknum = int(inp)if num< 1 or num > 4:print("请输入1-4之间的数字!")continuems[num-1] = ms[num-1] + 1
for i in range(len(ml)):dic[ml[i]] = ms[i]
print('投票结果: ', dic)
三.念数字.  给出一个字典. 在字典中标识出每个数字的发音. 包括相关符号. 然后由
用户输入一个数字. 让程序读出相对应的发音(不需要语音输出. 单纯的打印即可)
dic = {"-":"fu","0":"ling","1":"yi","2":"er","3":"san","4":"si","5":"wu","6":"liu","7":"qi","8":"ba","9":"jiu",".":"dian"
}
a = 0
s = input("请输入一个数字:")
for i in s:if i in dic.keys():print(dic[i],end = " ")
四.车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量. (升级题)
car = ['鲁A32444','鲁B12333','京B8989M','黑C40678','黑C46555','沪B25041']
locals = {'沪':"上海",'黑':'黑龙江','鲁':'山东','鄂':'湖北','湘':'湖南','京':'北京'}
dic = {}
li = []
for i in range(len(car)):for a in locals:if car[i][0] in a:li.append(locals[a])
for b in li:dic[b] = li.count(b)
print(dic)
五.干掉主播. 现有如下主播收益信息, 按照要求, 完成相应操作:
1.计算各位主播收益的平均值.
zhubo = {'卢本伟':122000,'冯提莫':189999,'金老板':99999,'吴老板':25000000,'alex':126}avg = sum(list(zhubo.values()))/len(zhubo.values())
2.干掉收益小于平均值的主播.
avg = sum(list(zhubo.values()))/len(zhubo.values())
zhubo1 = {p:zhubo[p] for p in zhubo.keys() if zhubo[p] > avg}
print(zhubo1)
3.干掉卢本伟.
del zhubo["卢本伟"]
print(zhubo)

python全栈开发-再谈编码 python_day_6相关推荐

  1. python相关职业-浅谈Python全栈开发工程师,让程序员都眼红的职业!

    原标题:浅谈Python全栈开发工程师,让程序员都眼红的职业! Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 ...

  2. python全栈开发工程师招聘_浅谈Python全栈开发工程师,让程序员都眼红的职业!...

    若把学C/C++难度比作做冰箱设计师,那么Java就是公司做冰箱的工人,而Python就是使用冰箱的客户.这只是难度的比较,那么就有人要说Python肯定很弱了,是真的如此吗? 领域--------流 ...

  3. 浅谈Python全栈开发工程师, 让程序员都眼红的职业!

    Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 (私信小编001 .002 .003 .007任何一个即可自动获 ...

  4. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  5. termux pythonlxml安装_将安卓手机打造成你的python全栈开发利器

    原标题:将安卓手机打造成你的python全栈开发利器 超神利器 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧?之前我也研究过一阵子这个工具,但因为一次简单的爬虫让我对它失望之 ...

  6. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  7. 将安卓手机打造成你的python全栈开发利器

    超神利器 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我 ...

  8. python全栈开发下载_python全栈开发神器 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn...

    将安卓手机打造成你的python全栈开发利器 超神利器- 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧?之前我也研究过一阵子这个工具,但因为一次简单的爬虫让我对它失望之极.Q ...

  9. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

最新文章

  1. 读后感与机翻《人类因果学习的分解:自下而上的联想学习和自上而下的图式推理》
  2. 安谋中国发布“玲珑”i3i5 ISP处理器,剑指何方?
  3. 绝了!一个妹子 rm -rf 把公司整个数据库删没了
  4. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
  5. [scikit-learn 机器学习] 3. K-近邻算法分类和回归
  6. 神奇的幻方(洛谷P2615题题解,Java语言描述)
  7. RN学习笔记02:利用WebStorm创建RN项目
  8. java 从已知日期计算干支纪日_两个日期计算
  9. 2020统计局的行政划分表_湖州市有几个区和县?湖州市2020年县级以上区划名单...
  10. 主动土工围栏行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. java interface abstract
  12. java学习笔记—实现一个类MyInputStream(28)
  13. Python——python3的requests模块的导入
  14. 360浏览器html在哪儿,360浏览器的收藏夹在哪_如何找到360浏览器收藏夹路径位置...
  15. mysql schemata_SCHEMATA · xiaoboluo768/mysql-system-schema Wiki · GitHub
  16. thinkphp 实现图片中的二维码识别
  17. 李开复写给女孩子们的
  18. javascript 写农场迭代
  19. 计算机毕业设计(51)java小程序毕设作品之教室图书馆座位预约小程序系统
  20. linux查找代码cd文件夹,Linux fing cd 查找文件/文件夹并进入目录命令

热门文章

  1. linux如何修改文件颜色,linux修改ls文件颜色
  2. 北京web前端培训,三大框架去选哪个好
  3. 数据库高并发的处理方法
  4. RK903 RK901 AP6xxx系列WiFi模块配置
  5. 前端通过3d实现一个立体正方体
  6. JAVA-JDBC原理
  7. 狗指甲修剪器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. SpringCloud-Gateway自定义过滤器,解决body流不能重复读的问题
  9. 3分钟快速了解mysql和es中字段类型相似之处
  10. PreferenceActivity 偏好设置