liangzhiwen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理


mini-web服务器

- 能够完成简单的请求处理
- 使用http协议
- 目的:加深对网络编程的认识、为后面阶段学习web做铺垫

简单数据结构

- 排列组合
      import itertools
      
      # 排列:从m个元素中提取n个,所有可能就是排列(有顺序)
      # 当m等于n时的排列称为全排列
      # it = itertools.permutations([1, 2, 3], 3)
      
      # 组合:没有顺序的排列
      # it = itertools.combinations([1, 2, 3, 4], 2)
      
      # 笛卡尔乘积:多个序列中的元素组合
      # it = itertools.product([1, 2], [3, 4], [5, 6])
      # 上面多个相同序列的场景
      it = itertools.product([1, 2], repeat=3)
      
      print(it)
      for i in it:
          print(i)
      
      # 可以转换为列表
      # print(list(it1))
- 计数器及双向队列
      from collections import Counter, deque
      
      # 统计序列中元素出现的次数
      c = Counter([1, 2, 3, 4, 1, 2, 3, 1, 2, 1])
      
      print(c)
      print(type(c))
      # 可以转换为字典
      print(dict(c))
      
      # 双向队列
      d = deque([1, 2, 3])
      
      # 右侧追加
      d.append(4)
      # 左侧添加
      d.appendleft(5)
      
      # 右侧弹出数据
      print(d.pop())
      # 左侧弹出数据
      print(d.popleft())
      
      # 右侧扩展
      d.extend(['a', 'b', 'c'])
      # 左侧扩展
      d.extendleft(['aa', 'bb', 'cc'])
      
      # 循环移动:正数表示向右移动,负数表示向左移动
      # d.rotate(1)
      d.rotate(-1)
      print(d)
      print(list(d))
- 链表
  - 添加节点
  - 追加节点
  - 插入节点
  - 删除节点

图片处理

- 说明:通常对图片的操作有:缩放、旋转、翻转、裁剪、滤镜、画图等。
- 扩展库:PIL,只支持py2,需要安装pillow库之后才能支持py3
- 安装:pip install pillow
- 预备知识:
  - 颜色:R(红)、G(绿)、B(蓝)、A(透明)
  - 坐标:(0, 0)坐标在图片的左上角,向右表示水平的正方向,向下表示垂直的正方向。
- 验证码:
      from PIL import Image, ImageFont, ImageDraw, ImageFilter
      from random import randint
      
      # 产生随机的颜色
      def rand_color():
          return (randint(128, 255), randint(128, 255), randint(128, 255))
      
      # 创建图片
      img = Image.new('RGB', (200, 50), 'white')
      
      # 创建字体
      font = ImageFont.truetype('xdxwz.ttf', 30)
      
      # 创建画笔
      draw = ImageDraw.Draw(img)
      
      # 写字
      for i in range(4):
          draw.text((i*50+15, 0), 'A', font=font, fill='black')
      
      # 画干扰点
      for i in range(100*50):
          x = randint(0, 200)
          y = randint(0, 50)
          draw.point((x, y), fill=rand_color())
      
      # 使用滤镜,会生成新的图片
      img = img.filter(ImageFilter.GaussianBlur)
      # 展示图片,会调出系统的图片查看器
      img.show()

py2与py3的区别

- 说明:见pdf文件

 

posted on 2018-09-10 11:17  liangzhiwen  阅读(122)  评论(0编辑  收藏  举报