zoukankan      html  css  js  c++  java
  • 基本模块

    你改变不了事实,但你可以改变态度;你改变不了过去,但你可以改变现在;
    你不能控制他人,但你可以掌握自己;你不能预知明天,但你可以把握今天;
    你不可以样样顺利,但你可以事事顺心;你不能延伸生命的长度,但你可以决定生命的宽度;
    你不能左右天气,但你可以改变心情;你不能选择容貌,但你可以展现笑容。
    # # ------------------------------------------------------------------------------------------------------------#
    day  21
    一. 今日主要内容
    1. 关于模块
    import
    from xxx import xxx
    2. Collections
    1. Counter 计数器
    2. 栈: 先进后出.
    队列:先进先出
    deque:双向队列
    3. defaultdict 默认值字典
    4. namedtuple 命名元祖. struct_time 结构化时间就是命名元祖
    5. OrederedDict 有序字典。 按照我们存储的顺序保存. 和3.6以后的字典一样的
    3. time 时间模块
    1. 获取系统时间 time.time() 时间戳
    2. 格式化时间 strftime() 时间格式: %Y-%m-%d %H:%M:%S %Y-%m-%d
    3. 结构化时间 time.gmtime() time.localtime()
    strptime() 把格式化时间转化成结构化时间
    mktime() 把结构化时间转化成时间戳

    时间差的计算

    4. os和sys
    os.sep 文件路径分隔符
    sys.path python查找模块的路径

    明天:
    序列化
    1. pickle(重点)
    2. json(重点)
    3. shevle
    4. configparser

    # # ------------------------------------------------------------------------------------------------------------#

    # import collections
    from collections import Counter

    # s = "I am sylar, I have a dream, freedom...."
    # dic = {}
    # for el in s:
    # dic[el] = dic.setdefault(el, 0) + 1
    # print(dic)
    #
    # qq = Counter(s)
    #
    # print("__iter__" in dir(qq))
    # for item in qq:
    # print(item, qq[item])

    # lst = ["五花马", "千金裘", "不会", "不会", "不会"]
    # c = Counter(lst)
    # print(c['五花马'])

    # dic = {"a":"b", "c":"d"}
    # print(dic.keys())


    # 栈 特点:先进后出
    # 队列 特点:先进先出
    # python中提供了队列. 没有栈. 自己写一个栈

    # class StackFullError(Exception):
    # pass
    # class StackEmptyError(Exception):
    # pass
    #
    # class Stack:
    # def __init__(self, size):
    # self.index = 0 # 栈顶指针
    # self.lst = []
    # self.size = size
    #
    # # 给栈添加元素
    # def push(self, item):
    # if self.index == self.size:
    # # 栈已经满了. 不能再装东西了
    # raise StackFullError('the stack is full')
    # self.lst.insert(self.index, item) # 对于空列表. 需要insert插入内容
    # # self.lst[self.index] = item # 把元素放到栈里
    # self.index += 1 # 栈顶指针向上移动
    #
    # # 从栈中获取数据
    # def pop(self):
    # if self.index == 0:
    # raise StackEmptyError("the stack is empty")
    # self.index -=1 # 指针向下移动
    # item = self.lst.pop(self.index) # 获取元素. 删除.
    # return item
    # s = Stack(5)
    # s.push("馒头1号")
    # s.push("馒头2号")
    # s.push("馒头3号")
    # s.push("馒头4号")
    # s.push("馒头5号")
    #
    # print(s.pop())
    # print(s.pop())
    # print(s.pop())
    # print(s.pop())
    # print(s.pop())
    #
    #
    # lst = []
    # lst.append("哈哈1")
    # lst.append("哈哈2")
    # lst.append("哈哈3")
    # lst.append("哈哈4")
    #
    # print(lst.pop())
    # print(lst.pop())
    # print(lst.pop())
    # print(lst.pop())

    # 队列
    # import queue
    # #
    # q = queue.Queue() # 创建队列
    # q.put("李嘉诚")
    # q.put("陈冠希")
    # q.put("周润发")
    # q.put("吴彦祖")
    #
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # # print(q.get()) # 队列中如果没有元素了. 继续获取的话. 会阻塞
    # print("拿完了")

    # from collections import deque
    #
    # q = deque() # 创建一个双向队列
    # q.append("高圆圆")
    # q.append("江疏影")
    # q.appendleft("赵又廷")
    # q.appendleft("刘大哥")
    # # 刘大哥 赵又廷 高圆圆 江疏影
    # print(q.pop()) # 从右边获取数据
    # print(q.pop())
    # print(q.popleft()) # 从左边获取数据
    # print(q.popleft())
    # print(q.pop())

    # from collections import namedtuple
    #
    # point = namedtuple("Point", ["x", "y", 'z']) # 这个就相当于写了一个类
    # # class point:
    # # def __init__(self, x, y):
    # # self.x = x
    # # self.y = y
    #
    # p = point(5, 18, 88)
    # print(p.x)
    # print(p.y)
    # # p.x = 19 # 终归是一个元组
    # print(p)


    # dic = {'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'}
    # print(dic) # 最底层一定是无序的. 最底层是hash
    #
    # from collections import OrderedDict
    # # 按照我们存储的顺序保存数据
    # od = OrderedDict({ 'b':'薯条','a':'娃哈哈', 'c':'胡辣汤'})
    # print(od)

    # dic = {}
    # # print(dic["周润发"]) # 报错
    # print(dic.get("周润发", "英雄本色")) # None

    from collections import defaultdict

    # d = defaultdict(list) # {} # 参数位置给的内容必须是可调用的
    # d["周杰伦"] = "昆凌"
    # print(d["周杰伦"]) # 从字典中获取数据的时候. 如果这个key不存在. 去执行可执行的内容, 拿到的是一个空列表

    # lst= [11,22,33,44,55,66,77,88,99]
    # d = defaultdict(list)
    # for el in lst:
    # if el < 66:
    # d["key1"].append(el) # key1默认是不存在的. 但是可以拿key1. 一个空列表.
    # else:
    # d["key2"].append(el)
    # print(d)


    def func():
    return "胡辣汤"

    d = defaultdict(func)

    print(d["哈哈"])
    print(d)


    # # ------------------------------------------------------------------------------------------------------------#

    import time
    # 中文
    import locale
    locale.setlocale(locale.LC_CTYPE, "chinese")

    # 获取当前系统时间, 时间戳
    # print(time.time()) # 1542166230.6139991, 给机器看的, 以1970-01-01 00:00:00 数据库存储的是这个时间
    # 格式化时间 2018-11-14 11:22:56 2018/11/14 11:22:56

    # s = time.strftime("%Y-%m-%d %H:%M:%S") # string format time
    # print(s) # 2018-11-14 11:42:06
    #
    # time.sleep(5) # 睡, 到点起床 wait() -> notify()
    # print("起床了")

    # while 1:
    # s = time.strftime("%Y-%m-%d %H:%M:%S") # 使用频率最高
    # print(s)
    # time.sleep(1)


    # t = time.localtime()
    # print(t.tm_year)
    # print(t.tm_mon)
    # print(t.tm_mday)
    # print(t.tm_hour)
    # print(t.tm_min)
    # print(t.tm_sec)
    # print("%s-%s-%s %s:%s:%s" % (t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec))

    # 数据库里存了一个时间戳 1888888888
    # 从时间戳 -> 格式化时间
    t = time.localtime(1542513992) # 时区 gmtime() 格林尼治时间.
    print(t)
    str_time = time.strftime("%Y-%m-%d %H:%M:%S", t)
    print(str_time)

    # 用户输入一个时间. 变成时间戳
    # 格式化时间 -> 时间戳
    # 2018-11-18 12:06:32
    # s = "2018-11-18 12:06:32"
    # t = time.strptime(s, "%Y-%m-%d %H:%M:%S") # string parse time
    # print(t)
    # # 结构化时间 -> 时间戳
    # ss = time.mktime(t)
    # print(ss)
    # print(time.strftime("%Y年%m月%d日"))
    #
    # # 中文
    # import locale
    # locale.setlocale(locale.LC_CTYPE, "chinese")


    # 时间差 1小时30分
    # begin = "2018-11-14 16:30:00"
    # end = "2018-11-14 18:00:00"
    # # 用时间戳计算出时间差(秒)
    # begin_struct_time = time.strptime(begin, "%Y-%m-%d %H:%M:%S")
    # end_stract_time = time.strptime(end, "%Y-%m-%d %H:%M:%S")
    #
    # begin_second = time.mktime(begin_struct_time)
    # end_second = time.mktime(end_stract_time)
    #
    # # 秒级的时间差 180000
    # diff_time_sec = abs(begin_second - end_second)
    #
    # # 转换成分钟
    # diff_min = int(diff_time_sec//60)
    # print(diff_min)
    #
    # diff_hour = diff_min//60 # 1
    # diff_min_1 = diff_min % 60 # 30
    #
    # print("时间差是 %s小时%s分钟" % (diff_hour, diff_min_1))





    # begin = "2019-11-14 16:30:00"
    # end = "2018-11-14 18:00:00"
    # # 用时间戳计算出时间差(秒)
    # begin_struct_time = time.strptime(begin, "%Y-%m-%d %H:%M:%S")
    # end_stract_time = time.strptime(end, "%Y-%m-%d %H:%M:%S")
    #
    # begin_second = time.mktime(begin_struct_time)
    # end_second = time.mktime(end_stract_time)
    #
    # # 秒级的时间差 180000
    # diff_time_sec = abs(begin_second - end_second)
    #
    # # 转化成结构化时间ab
    # t = time.gmtime(diff_time_sec) # 最好用格林尼治时间。 否则有时差
    # print(t)
    #
    # print("时间差是%s年%s月 %s天 %s小时%s分钟" % (t.tm_year-1970, t.tm_mon-1, t.tm_mday-1,t.tm_hour, t.tm_min ))

    # 自学:datetime(时间), calendar(日历)

    t = time.localtime()
    print(type(t)) # (2018, 11, 18, 12, 6, 32,6, 322, 0)

    from collections import namedtuple

    p = namedtuple("Point",['x', 'y'])
    pp = p(1,2)
    print(pp)
    print(type(pp))

    # # ------------------------------------------------------------------------------------------------------------#

    import random

    # print(random.randint(1,2)) # [start, end]
    # print(random.random()) # (0,1)之间的小数
    # print(random.uniform(3,10)) # (3, 10 )的随机小数

    # n = random.randrange(1, 10, 3) # [1, 10) 从奇数中获取到随机数
    # while n != 10:
    # n = random.randrange(1, 10, 3)

    # for i in range(1, 10, 3):
    # print(i)

    print(random.choice([1, '周杰伦', ["盖伦", "胡辣汤"]])) #
    print(random.sample([1, '23', [4, 5]], 2)) # 列表元素任意2个组合

    lst = ["周杰伦", "昆凌", "马化腾", "马丽", "沈腾", "秋雅"]
    random.shuffle(lst)
    print(lst)

    # # ------------------------------------------------------------------------------------------------------------#

    # os.makedirs('dirname1/dirname5') # 创建文件夹目录结构
    # os.removedirs('dirname1/dirname5') # 删除文件夹, 如果文件夹内没有东西。 就可以删除。 否则报错

    # os.mkdir('dirname/哈哈') # mkdir如果父级目录不存在。 报错
    # os.rmdir('dirname') # 删除文件夹

    # print(os.listdir('../')) # 获取到文件夹内的所有内容. 递归

    # print(os.stat('dirname')) # linux

    # os.system("dir") # 直接执行命令行程序
    # s = os.popen("dir").read()
    # print(s)

    # print(os.getcwd() ) # 当前程序所在的文件夹

    #
    # print(os.path.abspath("../day020 继承") ) # 获取绝对路径
    # print(os.path.split("D:python_workspaceday020 继承")) # 拆分路径 ('D:\python_workspace', 'day020 继承')
    # print(os.path.dirname("D:python_workspaceday020 继承")) # D:python_workspace
    # print(os.path.basename("D:python_workspaceday020 继承")) # day020 继承
    #
    # print(os.path.exists("dirname")) # 判断文件是否存在
    # print(os.path.isabs("D:python_workspaceday020 继承")) # 是否是绝对路径
    #
    # print(os.path.isfile("01 今日主要内容")) # 是否是文件
    # print(os.path.isdir("dirname")) # 是否是文件夹
    #
    # print(os.path.getsize("01 今日主要内容") ) # 文件大小

    # print("胡辣汤", "传盛", "big", sep="small")

    # print("c:"+os.sep+"胡辣汤") # \/ 文件路径的分隔符

    # print(os.name) # nt

    import sys
    # sys.exit(1) # 正常退出

    # print(sys.version)
    # print(sys.platform) # 平台名称


    print(sys.path) # 搜索模块的路径
    sys.path.append("e:/")
    import master
    master.chi()

    # # ------------------------------------------------------------------------------------------------------------#


  • 相关阅读:
    sequelize 批量添加和更新数据 bulkCreate
    js 线程和进程的关系
    mysql 索引 笔记1
    mysql 主键
    loj2292 「THUSC 2016」成绩单
    loj2291 「THUSC 2016」补退选
    cf984c Finite or not?
    cf984e Elevator
    loj2540 「PKUWC 2018」随机算法
    luoguT30204 偷上网
  • 原文地址:https://www.cnblogs.com/dealdwong2018/p/9978051.html
Copyright © 2011-2022 走看看