Python基础-17

day16回顾:
迭代器和生成器
什么是迭代器
  iter(可迭代对象) 返回的对象是迭代器
  可以用next(迭代器) 访问可迭代对象
for 语句实质 while, next, iter的组合
生成器:
  两种:
    生成器函数
    生成器表达式
生成器函数内部必须要有yield语句
    def fx():
        yield 语句
yield 语句
   格式
      yield 表达式
   yield 返回的数据将传递给 next(it)
生成器表达式
  语法
    (x for x in 可迭代对象 if x > 0)
迭代工具函数:
  zip(iter1, iter2, ....)
  enumerate(iter, start=0)
enumerate 示例:
   L = [3, 9, 7, 5, 1, 5, 4, 8]
   for n, e in enumerate(L):
       print("索引:", n, 对应的值是: e)
字节串 bytes  字节数组 bytearray
   不可变量   --> 可变的
   tuple         list
   frozenset     set
   bytes         bytearray
b'hello'  # 字面值
bytes()                  bytearray()
bytes(整型可迭代对象)       bytearray(整型可迭代对象)
bytes(整数n)              bytearray(整数n)
bytes(字符串, encoding='utf-8') bytearray(字符串, encoding='utf-8')
字节串和字节数组的运算:
  + += * *=
  < <= >= > == !=
  in / not in
  索引 index /切片 slice
序列:
  str, list, tuple, bytes, bytearray

day17笔记:
bytearray 的方法:
   BA代表bytearray
   BA.clear()    清空字节数组
   BA.append(n)  追加一个字节(n为0~255的整数)
   BA.remove(value)  删除第1个出现的字节,如果没有出现,则触发ValueError错误
   BA.reverse()  字节的顺序反转
   BA.decode(encoding='utf-8')  将bytearray转换为字符串
   BA.find(sub[, start[, end]])  查找sub 子节数数组

文件:
  什么是文件
    文件是用于数据存储的单位
    文件通常用来长期存储设置
    文件中的数据是以字节为单位进行顺序存储的
  内存的读写速度快/ 磁盘的读写速度慢

文件的操作步骤:
   打开文件
   读写文件
   关闭文件
文件的打开函数 open
  open(file, mode='rt')  用于打开一个文件,返回此文件流对象,如果打开失败会触发IOError错误
文件的关闭方法
  F.close()  # 关闭文件,释放系统资源
示例见:
    file_open.py
文件操作分为两种类型的操作:
   文本文件操作
   二进制文件操作
文本文件模式:
   mode = 't'
   1. 默认文件中存储的内容为字符数据,以行为单位读取,采用系统默认的换行符进行分隔
   2. 对于文本文件的读写,需要用字符串(str) 进行读取和写入数据
各操作系统默认的换行符:
  Linux 换行符 '\n'
  Windows 换行符 '\r\n'
  旧的Macintosh 的换行符 '\r'
  新的Mac OS 换行符 '\n'
练习:
    将如下数据用文本编辑器sublime 写入到data.txt文件中
    数据如下:
      小张 13888888888
      小李 13999999999
      小赵 13666666666
    写程序读取数据,打印出姓名和电话号码,格式如下:
      姓名: 小张, 电话: 13888888888
练习:
  1. 写一个程序,读入任意行的文字信息,当输入空行时结束输入.
  将读入的字符串存于列表中,然后将列表里的内容写入的文件 input.txt 中
  2. 写一个程序, 从input.txt中读取之前输入的数据,存入列表中.再加上行号进行打印显示
     显示格式如下 :
        第1行: zzzzzzz
        第2行: xxxxxxx
  答案见:
    write_data.py
    read_data.py

二进制文件操作
  打开模式 : 'b'
  默认文件中存储的都是以字节为单位的二进制数据,通常有人为规定的格式,需要以字节为单位进行读写
  对二进制文件的读写,需要用字节串(bytes)进行操作
F.read(n) 方法
F.readline()
F.readlines()
  对于二进制文件,F.read()/F.readline返回字节串
  F.readlines() 返回字节串列表
  F.read(n)  n代表最大字节数
F.write(x)方法
  对于二进制文件,x必须为字节串

F.seek(offset, whence=0) 函数
  offset 偏移量:
      大于0的数代表向文件末尾方向移动
      小于0的数代表向文件头方向移动
  whence 相对位置
      0  代表从文件头开始偏移
      1  代表从当前位置开始偏移
      2  代表从文件尾开始偏移
示例见:
   seek.py
汉字编码:
  国标系列:
    GB18030 (2字节或4字节编码,共27533个)
        GBK (2字节编码,共21003个)
            GB2312 (2字节编码,共6763个汉字)
    (常用于Windows)
  国际标准:
      UNICODE16/UNICODE32  <<<--->>> UTF-8
      (常用于Linux / Mac OS X / IOS / Android)
      UTF-8(8-bit Unicode Transformation Format)
编码字符串:
  'gb2312'
  'gbk'
  'gb18030'
  'utf-8'
  'ascii'
  用于 encode和  decode方法中
编码注释:
  在源文件的第一行或第二行写入如下格式的内容
  # -*- coding:gbk -*-
  或
  # -*- coding:utf-8 -*-
  是告诉python3解释执行器当前文件的编码是什么


练习:
  1. 修改原来的学生管理系统的代码,将其为分模块
     建议:
       1. 把显示菜单放在一个模块内
       2. 把对学生的操作放在一个模块内
       3. 把主事件循环while True 选择输入放在一个模块内
  2. 在菜单上添加两个功能:
     | 9) 保存学生信息到文件(si.txt)  |
     | 10) 从文件中读取数据(si.txt)   |
     建议用逗号","分隔数据:
       # file: si.txt
       xiaozhang,21,98
       xiaoli,22,100
       ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值