回顾上周所有内容

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编程我们熟悉的字符串


万恶之源-再谈编码

1. 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:print("%s号评委" % (count))s = int(input("开始打分(分数必须大于5分, 小于10分):"))if s <= 5 or s >= 10:print("不符合评分要求,请重新打分:")continuecount += 1

二. 电影投票. 程序先给出一个目前正在上映的电影列表. 由用户给每一个电影投票.最终 将该用户投票信息公布出来 lst = ['金某梅', '解救吾先生', '美国往事', '西西里的美丽传说']结果: {'金某梅': 99, '解救吴先生': 80, '美国往事': 6, '西西里的美丽传说': 23}
lst = ['金某梅', '解救吾先生', '美国往事', '西西里的美丽传说']
dic = {}
a = 0
for i in lst:print(lst[a])s = int(input("请为该电影打分:"))dic[lst[a]] = sa += 1
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}
sum = 0
for i in zhubo.values():sum = sum + ia = sum / len(zhubo)
print("这些主播的平均收入是:%s" % (a))

2.干掉收益小于平均值的主播.
for i in list(zhubo):if zhubo[i] < a:del zhubo[i]
print(zhubo)

3.干掉卢本伟.
del zhubo["卢本伟"]
print(zhubo)

转载于:https://www.cnblogs.com/python119/p/9484204.html

python 基础第六篇相关推荐

  1. python基础-第六篇-6.2模块

    python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...

  2. Python基础(六)--类与对象

    目录 Python基础(六)--类与对象 1 类与对象的基本概念 1.1 什么是对象 1.2 什么是类 1.3 类与对象的关系 2 定义与初始化 2.1 类的定义 2.2 对象的初始化 2.3 动态增 ...

  3. Python基础语法入门篇(一)

    Python基础语法入门篇(二) 1. 注释 在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己 或者其他编码人员解读代码. 注释是给程序员看的,为了 ...

  4. Python基础(六)—函数式编程(内部函数、闭包、lambda、filter/map/reduce/sorce、偏函数)

    内部函数 Python中函数的作用域由def关键字界定,函数内的代码访问变量的方式是从其所在层级由内向外,若往外直至全局作用域都查找不到的话代码会抛异常. 主要看以下代码的差别~~ "&qu ...

  5. 小白都能学会的Python基础 第六讲:综合实战2 - 大数据分词与词云图绘制

    1.华小智系列 - Python基础(案例版) <Python基础>目录 第六讲:综合实战2 - 大数据分词与词云图绘制 1.大数据分词技巧 2.词频统计技巧 3.词云图绘制 4.微博词云 ...

  6. Python基础知识点六万字总结,爆肝一周熬夜完成【建议收藏】

    大家好,我是辣条. 今天给大家带来Python基础知识点的总结,不夸张的说我一周才写完,这才是第一弹,如果大家喜欢记得三连呦,我会火速更新下一弹,争取把这个系列做完,希望得到大家的支持. 目录 注释 ...

  7. python将姓王的都改成老王_老王Python基础+进阶+项目篇(高清无密)

    老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python先入为主下篇 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 ...

  8. 史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

    网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧 爬虫(七十)多进程multiprocess(六十一) ...

  9. 太大如何翻页固定表头_外行学 Python 爬虫 第六篇 动态翻页

    前面几篇文章,初步完成了从网络请求.数据解析.数据存储的整个过程,完成了一个爬虫所需的全部功能.但是通过对数据库中数据的分析会发现数据库中的元件数量比网站上的元件数量少了很多.前面的实现过程通过解析网 ...

最新文章

  1. matlab降低视频帧数,如何更改视频的帧速率
  2. 青龙面板薅羊毛–都爱玩(日收益2元左右)
  3. github上fork原项目,如何将本地仓库代码更新到最新版本?
  4. css 图文 上下 居中,CSS垂直居中的6种方法
  5. 深度学习(三十五)——Style Transfer(2), YOLOv3, Tiny-YOLO, One-stage vs. Two-stage
  6. numpy数组提取一定规律的数据
  7. c语言内循环,C语言循环控制语句
  8. viewsource和viewparsed_Network Panel说明
  9. 生活中的计算机趣味知识大全,五个有趣的电脑小知识
  10. matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
  11. CSDN Cookbook by Eric
  12. 8086寄存器的配合使用
  13. MySQL 安装 [mysql-5.6.37]
  14. 网赚在线之Cashfiesta公司网上赚钱全攻略
  15. Oracle锁表查询和解锁方法
  16. linux下重装显卡驱动
  17. 蛙蛙推荐:蛙蛙浏览器
  18. html查找器如何卸载,租号器要求卸载影子系统-怎么完全删除影子系统
  19. OpenCV-Python学习之(一)waitKey()函数详解
  20. Freeswitch 安装

热门文章

  1. 调用Spring Security下接口 get 可以成功,而post失败
  2. table表格整体居中实现
  3. Assert.assertEquals()用法
  4. 计算机专业贵州排名2015,2015贵州省大学最佳专业排行榜,贵州大学雄居榜首
  5. 一些gaoxiao的知识
  6. python基于rsa的数字签名实现_OpenSSL和Python实现RSA Key数字签名和验证
  7. 2022年中国制造业数字化转型研究报告
  8. hive函数——greatest、least 多列取最大最小值
  9. setInc 和 setDec 用于统计字段,更新操作
  10. 基于MATLAB的GUI界面数字图像处理系统