菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
197
0

2021.6.4

原创
05/13 14:22
阅读数 33949

昨日内容回顾

  • 队列与堆栈

    队列
    先进先出
    堆栈
    先进后出
    列表模拟实现
    append
       pop
  • 字典内置方法

    d = {'name':'jason','pwd':123}
    d['name']  # 取值的时候不推荐使用
    d.get('name')  # 推荐使用

    d['name'] = 'tony'
    d['age'] = 18

    d.keys()
    d.values()
    d.items()

    del d['name']
    d.pop('name')
    d.popitem()

    d.setdefault()
    键存在不修改 而是获取键对应的值
       键不存在则新建一个键值对
    d.update()  # 不推荐 没有

    dict()
    dict({})
       dict(name='jason',age=18)
       dict([['name','jason'],['pwd',123]])
  • 元组及元组内置方法

    小括号括起来 内部可以存放多个元素
    元素与元素之间逗号隔开 元素可以是任意数据类型  元组是不可变类型
    t = (111,222,333,444)  # tuple
    # 容器类型内部存储元素的时候 如果只有一个元素那么也推荐你将逗号加上
    # 元组相关面试题
    t = (11,22,[11,22])
    t[2].append(33)
  • 集合及集合内置方法

    大括号括起来 内部可以存放多个元素 元素不是键值对形式
    内部的元素只能是不可变类型
    s = {1,2,3,4,5}  # set
    # 空集合的定义需要使用关键字set
    # 1.去重 2.关系运算
    '''集合内元素会自动去重(集合内的元素是无序)'''
    '''关系运算就是比较两个群体之间的差异(交叉并集)'''
    &
    -
    |
    ^
    >
    <

今日内容概要

  • 作业讲解

  • 字符编码

  • 文件处理

    python代码操作文件读写

今日内容详细

作业讲解

2.字典练习题
   1.将列表中大于等于66的元素放入字典k1键对应的列表中
  将列表中小于66的元素放入字典k2键对应的列表中
       nums=[11,22,33,44,55,66,77,88,99,90]
       dic={
           'k1':[],
           'k2':[]
      }
   2.s='hello jason jason say hello sb sb sb'
统计字符串中每个单词出现的次数
      {'jason':2,...}
3.集合练习题
 一.关系运算
     有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
     pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
     linuxs={'wupeiqi','oldboy','gangdan'}
     1. 求出即报名python又报名linux课程的学员名字集合
     2. 求出所有报名的学生名字集合
     3. 求出只报名python课程的学员名字
     4. 求出没有同时这两门课程的学员名字集合
     去重并且保留原来的顺序
  l = [11,22,33,22,22,33,11,22,55,66,66,77,77]
       1.去重不保留顺序
       2.去重并且保留顺序

字符编码

计算机内部存储数据都是以二进制数字的形式存储
计算机基于电工作 而电信号只有高低电平两种状态
   也就意味着计算机的世界里只能识别两种状态
   我们人为的将高电平定义为数字1
   低电平定义为数字0
  0
   1    
   
   00
   01
   10
   11
   
   000
  ...
   
单位换算(重要)
比特位bit(二进制数的个数)
   8bit = 1bytes(字节)
   1024bytes = 1KB
   1024KB = 1MB
   1024MB = 1GB
   1024GB = 1TB
   1024TB = 1PB
 
字符编码的研究仅限于文本文件(******)


为什么我们人类在使用计算机输入字符的时候电脑展示是人类能够看懂的字符
而计算机内部只识别01二进制
00001010
   00001101              
   计算机二进制 设定好的对应关系 人类的字符
   
字符编码表
规定了人类的字符与数字之间的对应关系

字符编码发展史

一家独大
计算机是由美国人发明的 美国人需要计算机能够识别英文
   所以发明了ASCII码(字符编码表)
  记录了英文与数字的对应关系
      1bytes来表示所有的英文及符号
  8bit 256
                # 所有的英文字母及符号加起来其实也不会超过128种可能
群雄割据
中国
  中国人为了计算机能够识别中文发明了GBK码
       GBK码表
      记录了中文、英文与数字的对应关系
          2bytes来表示中文及符号
              16bit       65535
               1bytes来表示所有的英文及符号
                   # 生僻字可能会使用更多的bytes来表示
       
   日本
  日本人为了计算机能识别日文发明了shift_JIS码
       shift_JIS码表
      记录了日文、英文与数字的对应关系
           1bytes来表示所有的英文及符号
         
   韩国
韩国人为了计算机能识别韩文发明了Euc_kr码
       Euc_kr码表
      记录了韩文、英文与数字的对应关系
           1bytes来表示所有的英文及符号
天下一统
群雄割据导致数据交互不通畅(乱码)
   unicode万国码
  兼容万国字符
       所有的字符同意使用2bytes表示 不够增加更多bytes
   utf8
  unicode transformation format
       英文还是用1bytes
       中文改用3bytes
  # 内存使用的编码表是unicode 硬盘使用的是utf8
'''已经你们只需要记住文本文件编码统一使用utf8即可'''

字符编码实操

1.解决文件乱码的核心
文件以什么编码存的就以什么编码取
2.编码与解码(重要)
编码
  将人类的字符按照指定的编码转换成计算机能够识别的数据
       encode()
   解码
  将计算机能否识别的数据按照指定的编码转换成人类能够读懂的字符
       decode()
3.python解释器默认编码
python2默认的是ASCII码
  在python2中定义字符串在前面加一个字母u
       文件头指定编码
      # -*- conding:utf8 -*-
           name = u'jason'
   python3默认的是utf8码

文件操作

操作系统
windows mac linux
双击文件
硬盘转 磁头读取数据
保存文件
硬盘转 磁头写入数据

我们在操作文件的时候其实操作的是硬盘
'''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口'''


绝对路径与相对路径
绝对路径
  非常详细的路径描述
      无论什么人什么位置都可以找到
   相对路径
  有一个参考
      只有对应的人才可以找到

# res = open(r'a.txt','r',encoding='utf8')
# print(res.read())
# res.close()



# 打开a.txt 使用变量名f指代改文件
# with open(r'a.txt','r',encoding='utf8') as f:
#     print(f.read()) # 读取文件内容
   # with子代码运行结束之后会自动调用close关闭文件资源
# """
# with open(文件路径,读写模式,编码格式) as 变量名:
#     子代码块
# 文件路径是必须的
# 读写模式和编码格式是可选的
# """


# 如果不指定读写模式 那么默认使用r
# 如果不指定编码格式 那么默认使用当前计算机内部默认编码
"""在中国所有的windows电脑内部默认的编码是gbk"""
with open(r'a.txt') as f:
   print(f.read())  # 读取文件内容


# 取消转义
# res = r'D:\day08\a.txt'
# res1 = r'D:\day08\n.txt'
# res2 = r'D:\day08\t.txt'
# print(res,res1,res2)

发表评论

0/200
197 点赞
0 评论
收藏