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())
  • 相关阅读:
    LightOJ 1132 Summing up Powers(矩阵快速幂)
    hdu 3804 Query on a tree (树链剖分+线段树)
    LightOJ 1052 String Growth && uva 12045 Fun with Strings (矩阵快速幂)
    uva 12304 2D Geometry 110 in 1! (Geometry)
    LA 3263 That Nice Euler Circuit (2D Geometry)
    2013 SCAUCPC Summary
    poj 3321 Apple Tree (Binary Index Tree)
    uva 11796 Dog Distance (几何+模拟)
    uva 11178 Morley's Theorem (2D Geometry)
    动手动脑
  • 原文地址:https://www.cnblogs.com/jokerbj/p/7327942.html
Copyright © 2011-2022 走看看