zoukankan      html  css  js  c++  java
  • python开发模块基础:time&random

    一,time模块

    和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块

    常用方法
    1.(线程)推迟指定的时间运行。单位为秒。

    1 time.sleep(1)  #括号内为整数


    2.获取当前时间戳 缺点,看不懂

    print(time.time())

    3.表示时间的三种方式
       在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:

    (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

    (2)格式化的时间字符串(Format String): ‘1999-12-06’

     1 %y 两位数的年份表示(00-99 2 %Y 四位数的年份表示(000-9999 3 %m 月份(01-12 4 %d 月内中的一天(0-31 5 %H 24小时制小时数(0-23 6 %I 12小时制小时数(01-12 7 %M 分钟数(00=59 8 %S 秒(00-59 9 %a 本地简化星期名称
    10 %A 本地完整星期名称
    11 %b 本地简化的月份名称
    12 %B 本地完整的月份名称
    13 %c 本地相应的日期表示和时间表示
    14 %j 年内的一天(001-36615 %p 本地A.M.或P.M.的等价符
    16 %U 一年中的星期数(00-53)星期天为星期的开始
    17 %w 星期(0-6),星期天为星期的开始
    18 %W 一年中的星期数(00-53)星期一为星期的开始
    19 %x 本地相应的日期表示
    20 %X 本地相应的时间表示
    21 %Z 当前时区的名称
    22 %% %号本身

     (3).元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

     1 # 索引(Index)    属性(Attribute)            值(Values)
     2 # 0                tm_year(年)              比如2011
     3 # 1                tm_mon(月)                1 - 12
     4 # 2                tm_mday(日)                1 - 31
     5 # 3                tm_hour(时)              0 - 23
     6 # 4                tm_min(分)                0 - 59
     7 # 5                tm_sec(秒)                0 - 61
     8 # 6                tm_wday(weekday)        0 - 6(0表示周日)
     9 # 7                tm_yday(一年中的第几天)    1 - 366
    10 # 8                tm_isdst(是否是夏令时)    默认为-1

    时间模块用法

    首先,我们先导入time模块,来认识一下python中表示时间的几种格式:

    # !/usr/bin/env python
    # _*_coding:utf-8_*_
    # Author:Joker
    
    
    import time
    
    # print(time.time())   # 1531982635.617672 时间戳 1970年开始计数的
    
    # print(time.ctime())  # Thu Jul 19 14:45:44 2018,当前时间
    
    # print(time.ctime(time.time()-86400)) # Wed Jul 18 14:49:26 2018 时间戳转化为字符串时间
    
    # print(time.gmtime())
    # time.struct_time(tm_year=2018, tm_mon=7, tm_mday=19, tm_hour=6, tm_min=50, tm_sec=15, tm_wday=3, tm_yday=200, tm_isdst=0)
    # time_obj = time.gmtime()
    # print(time_obj.tm_year,time_obj.tm_mon) # 2018 7 注意下day的值,周一是0,而且是utc时间
    
    # print(time.gmtime(time.time()-86400)) # 将时间戳转换成struct_time格式
    # time.struct_time(tm_year=2018, tm_mon=7, tm_mday=18, tm_hour=6, tm_min=53, tm_sec=37, tm_wday=2, tm_yday=199, tm_isdst=0)
    
    # print(time.localtime()) # 本地时间,按照服务器的时区
    # time.struct_time(tm_year=2018, tm_mon=7, tm_mday=19, tm_hour=14, tm_min=56, tm_sec=14, tm_wday=3, tm_yday=200, tm_isdst=0)
    
    # time_obj = time.gmtime()
    # print(time.mktime(time_obj)) # 时间对象转成时间戳 # 1531954699.0
    
    # tm = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) # 将struct_time格式转化成指定的字符串格式
    # print(tm) # 2018-07-19 15:02:11
    
    # tm = time.strptime('2018-07-19','%Y-%m-%d') # 将字符串格式转化成struct_time格式
    # print(tm)
    # time.struct_time(tm_year=2018, tm_mon=7, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=200, tm_isdst=-1)
    
    
    
    
    import datetime
    # print(datetime.date.today()) # 2018-07-19,当前年月日
    
    # print(datetime.date.fromtimestamp(time.time())) # 2018-07-19 将时间戳转换成日期格式
    
    # print(datetime.datetime.now()) # 2018-07-19 15:10:00.874436 当前时间
    
    # current_time = datetime.datetime.now()
    # print(current_time.timetuple()) # 将字符串转换为struct_time格式
    # time.struct_time(tm_year=2018, tm_mon=7, tm_mday=19, tm_hour=15, tm_min=11, tm_sec=30, tm_wday=3, tm_yday=200, tm_isdst=-1)
    
    # str_to_date = datetime.datetime.strptime('09/10/12','%d/%m/%y')
    # print(str_to_date) # 2012-10-09 00:00:00 将字符串转换成日期格式
    
    # 时间加减
    # current_time = datetime.datetime.now() # 当前时间
    # print(datetime.datetime.now() + datetime.timedelta(days=10))
    # 2018-07-29 15:15:42.874593 比现在+10天
    
    # print(datetime.datetime.now() - datetime.timedelta(days=10))
    # 2018-07-09 15:16:55.388891 比现在-10天
    
    # print(datetime.datetime.now() - datetime.timedelta(hours=10))
    # 2018-07-19 05:18:23.341908 比现在-10小时
    
    # 时间替换
    # current_time = datetime.datetime.now() # 当前时间
    # print(current_time.replace(2200,2,2))
    # 2200-02-02 15:20:34.209528
    
    # 时间比较
    # current_time = datetime.datetime.now() # 当前时间
    # old_time = current_time.replace(2017,5)
    # print(current_time > old_time) # True

    二,random模块

    随机数模块的用法

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 
     4 import random
     5 #1.随机小数
     6 print(random.random())  #从0-1之间的小数
     7 print(random.uniform(1,3)) #1-3之间的小数
     8 
     9 #2.随机整数
    10 l = []
    11 l.append(str(random.randint(0,9)))  #0-9之间的随机数
    12 l.append(str(random.randint(0,9)))
    13 print(''.join(l))   #显示97
    14 print(l)            #['9', '7']
    15 print(random.randrange(1,4,2))  #也可以用布长来做,这是打印1-4之间的奇数1 3
    16 
    17 #3.随机一个返回
    18 print(random.choice([1,2,'b',4,'a',6])) #随机选择一个返回,[]()都可以
    19 
    20 #4.随机多个返回,返回的个数为函数的第二个参数,本例中是返回3个
    21 print(random.sample([1,2,'b',4,'a',6],3)) #返回3个,和之前的  返回的是列表
    22 
    23 #5.打乱顺序
    24 l = list(range(100))
    25 print(l)   #正常顺序
    26 random.shuffle(l)
    27 print(l)   #顺序打乱

    随机密码

    #!/usr/bin/env python
    #_*_coding:utf-8_*_
    
    #写一个验证码
    #首先要有数字,其次要有字母,一共4位,可以重复
    #65-91是a-z,用chr()可以转成字母
    #print(chr(90))
    #普通版本
    new_num_l = list(map(str,range(10)))  #['0','1'...'9']  #用来存数字
    alph_l = [chr(i) for i in range(65,91)]  #列表推导式   用来存字母
    new_num_l.extend(alph_l)  #包含字母和数字
    ret_l = [random.choice(new_num_l) for i in range(4)] #取得重复随机 列表推导式
    print(''.join(ret_l))       #因为是列表,所以join一下
    ret = random.sample(new_num_l,4)  #取得不重复随机
    print(''.join(ret))
    
    # 写成函数
    def myrandom():
        new_num_l = list(map(str,range(10)))
        alph_l = [chr(i) for i in range(97,123)]  #列表推导式
        new_num_l.extend(alph_l)
        ret_l = [random.choice(new_num_l) for i in range(4)]  #列表推导式
        return ''.join(ret_l)
    print(myrandom())
  • 相关阅读:
    【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
    异常控制流
    链接
    最小生成树的Prim算法(待修正版)
    最小生成树的Kruskal算法
    优先队列用法(转载)
    不相交集合的链表实现
    寻找通用汇点
    找零问题
    【Angular06】管道(类似vue的过滤器)、变更检测的工作原理
  • 原文地址:https://www.cnblogs.com/jokerbj/p/7327942.html
Copyright © 2011-2022 走看看