zoukankan      html  css  js  c++  java
  • 023.Python的随机模块和时间模块


    一 random 随机模块

    1.1 获取随机0-1之间的小数(左闭右开)  0<= x < 1

    import random
    res = random.random()
    print(res)

    执行

    [root@node10 python]# python3 test.py
    0.1808803715859979
    [root@node10 python]# python3 test.py
    0.39177193259061716

    1.2 randrange()

    随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值)

    复制代码
    import random
    res = random.randrange(3)  # 0~2
    print(res)
    res = random.randrange(1,10) # 1~9
    print(res)
    res = random.randrange(1,10,3) # 1 4 7
    print(res)
    复制代码

    执行

    [root@node10 python]# python3 test.py
    1
    9
    7

    1.3 randint()

    随机产生指定范围内的随机整数 (目前唯一可以取到最大值的函数,不推荐使用)

    import random
    res = random.randint(2,5) # 2 3 4 5 最大值可以取到 print(res)

    执行

    [root@node10 python]# python3 test.py
    5
    [root@node10 python]# python3 test.py
    4

    randint 必须给2个参数 1个或者3个都不行,功能有局限性,不推荐使用

    import random
    res = random.randint(2,5,2)
    print(res)

    执行

    1.4 uniform()

    获取指定范围内的随机小数(左闭右开)

    import random
    res = random.uniform(1,10) # 1<= x < 10
    print(res)
    res = random.uniform(5,-3)
    print(res)

    执行

    复制代码
    [root@node10 python]# python3 test.py
    6.236326270460472
    -1.5051738051095427
    [root@node10 python]# python3 test.py
    5.575905200548584
    4.156048569051353
    [root@node10 python]# python3 test.py
    1.9549944091757219
    4.605001284532852
    复制代码

    1.5 choice()

    随机获取序列中的值(多选一)

    import random
    listvar = [1,2,3,90,6,5]
    res = random.choice(listvar)
    print(res)

    执行

    复制代码
    [root@node10 python]# python3 test.py
    1
    [root@node10 python]# python3 test.py
    3
    [root@node10 python]# python3 test.py
    90
    [roo
    复制代码

    自定义函数 实现choice的效果

    复制代码
    import random
    listvar = [1,2,3,90,6,5]
    def mychoice():
            length = len(listvar)
            res = random.randrange(0,length) # 0 ~ 5
            return  listvar[res]
    print(mychoice())
    复制代码

    执行

    复制代码
    [root@node10 python]# python3 test.py
    6
    [root@node10 python]# python3 test.py
    90
    [root@node10 python]# python3 test.py
    3
    复制代码

    1.6 sample()

    随机获取序列中的值(多选多) [返回列表]

    sample(容器类型数据,选几个)

    import random
    listvar = ["周杰伦","李宇春","王宝强","宋小宝","刘德华","张学友","王文"]
    res = random.sample(listvar,2)
    print(res)

    执行

    [root@node10 python]# python3 test.py
    ['王文', '张学友']
    [root@node10 python]# python3 test.py
    ['刘德华', '张学友']

    1.7 shuffle()

    随机打乱序列中的值(直接打乱原序列)

    import random
    listvar = ["周杰伦","李宇春","王宝强","宋小宝","刘德华","张学友","王文"] random.shuffle(listvar) print(listvar)

    执行

    ['王文', '王宝强', '宋小宝', '周杰伦', '张学友', '刘德华', '李宇春']
    [root@node10 python]# python3 test.py
    ['张学友', '周杰伦', '王宝强', '王文', '宋小宝', '李宇春', '刘德华']
    [root@node10 python]# python3 test.py
    ['李宇春', '刘德华', '王宝强', '王文', '周杰伦', '张学友', '宋小宝']

    1.8 生成验证码

    实现一个验证码功能,每次随机产生5个字符

    复制代码
    import random
    def yanzhengma():
            strvar = ''
            for i in range(5):
                    # res = chr(97)
                    # a-z 范围的小写字母
                    a_z = chr(random.randrange(97,123))
                    # A-Z 产生所有的大写字母 65 => A  90
                    A_Z = chr(random.randrange(65,91))
                    # 0-9 产生0-9 10个数字
                    num  = str(random.randrange(0,10)) # 为了实现字符串的拼接
                    # 把范围的可能出现的字符放到同一的列表中进行随机挑选
                    listvar = [a_z,A_Z,num]
                    # 把选好的5个随机字符 通过+来形成拼接
                    strvar += random.choice(listvar)
            # 直接返回该字符串
            return strvar
    res = yanzhengma()
    print(res)
    复制代码

    执行

    复制代码
    [root@node10 python]# python3 test.py
    171ZV
    [root@node10 python]# python3 test.py
    UYj8P
    [root@node10 python]# python3 test.py
    JkNev
    [root@node10 python]# python3 test.py
    KCEY8
    [root@node10 python]# python3 test.py
    YMa30
    复制代码

    二 Time时间模块

    2.1 time()

    获取本地时间戳

    import time
    res = time.time()
    print(res)

    执行

    [root@node10 python]# python3 test.py
    1574685161.550896

    2.2 mktime()

    通过[时间元组]获取[时间戳] (参数是时间元组)

    import time
    ttl = (2019,5,12,15,21,0,0,0,0)
    res = time.mktime(ttl)
    print(res)

    执行

    [root@node10 python]# python3 test.py
    1557692460.0

    2.3 localtime()

    通过[时间戳]获取[时间元组] (默认当前时间)

    import time
    ttl = time.localtime()  # 默认使用当前时间戳
    print(ttl)
    ttl = time.localtime(1557645000) # 自定义时间戳,转化为时间元组
    print(ttl)

    执行

    复制代码
    [root@node10 python]# python3 test.py
    time.struct_time(tm_year=2019, 
    tm_mon=11,
    tm_mday=25,
    tm_hour=7,
    tm_min=36,
    tm_sec=43,
    tm_wday=0,
    tm_yday=329,
    tm_isdst=0) time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, tm_hour=3, tm_min=10, tm_sec=0, tm_wday=6, tm_yday=132, tm_isdst=1)
    复制代码

    2.4 ctime()

    通过[时间戳]获取[时间字符串] (默认当前时间)

    import time
    res = time.ctime()  # 默认使用当前时间戳
    print(res)
    res = time.ctime(1557645000) # 可以手动自定义时间戳
    print(res)

    执行

    [root@node10 python]# python3 test.py
    Mon Nov 25 07:38:28 2019
    Sun May 12 03:10:00 2019

    2.5 asctime()

    通过[时间元组]获取[时间字符串](参数是时间元组)

    import time
    ttl = (2019,5,12,15,21,0,1,0,0)
    res = time.asctime(ttl)
    print(res)

    执行

    [root@node10 python]# python3 test.py
    Tue May 12 15:21:00 2019

    优化版

    import time
    ttl = (2019,5,12,15,21,0,4,0,0)
    res = time.mktime(ttl)
    print(time.ctime(res))

    执行

    [root@node10 python]# python3 test.py
    Sun May 12 16:21:00 2019

    2.6 strftime()

    通过[时间元组]格式化[时间字符串]  (格式化字符串,[可选时间元组参数])

    复制代码
    import time
    res = time.strftime("%Y-%m-%d %H:%M:%S") # 默认以当前时间戳转化为字符串
    print(res)
    # linux当中 strftime可以识别中文,windows不行
    res = time.strftime("%Y-%m-%d %H:%M:%S",(2008,8,8,8,8,8,0,0,0))
    print(res)
    复制代码

    执行

    [root@node10 python]# python3 test.py
    2019-11-25 07:42:20
    2008-08-08 08:08:08

    2.7 strptime()

    通过[时间字符串]提取出[时间元组]  (时间字符串,格式化字符串)

    注意:左右两侧的字符串要严丝合缝,有多余的空格都不行,然后按照次序,依次通过格式化占位符,提取时间

    import time
    res = time.strptime("2019年3月8号15点21分30秒,发射了人造卫星嫦娥"  ,  "%Y年%m月%d号%H点%M分%S秒,发射了人造卫星嫦娥")
    print(res)

    执行

    复制代码
    [root@node10 python]# python3 test.py
    time.struct_time
    (tm_year=2019,
    tm_mon=3,
    tm_mday=8,
    tm_hour=15,
    tm_min=21,
    tm_sec=30,
    tm_wday=4,
    tm_yday=67,
    tm_isdst=-1)
    复制代码

    2.8 perf_counter()

    用于计算程序运行的时间

    复制代码
    import time
    startime = time.perf_counter()
    print(startime)
    for i in range(1000000000):
            pass
    endtime = time.perf_counter()
    # 结束时间  - 开始时间[ time.time()] 也可以实现;
    res = endtime - startime
    print(res)
    复制代码

    执行

    [root@node10 python]# python3 test.py
    252269.756153608
    44.59376426698873
    学习记录,小白一枚
  • 相关阅读:
    javascript简易下拉菜单效果
    精通javascript笔记(智能社)——简易tab选项卡及应用面向对象方法实现
    精通JS正则表达式(转)
    精通javascript笔记(智能社)——数字时钟
    ERROR: transport error 202: bind failed: Address already in use
    理解git对象
    InvocationHandler中invoke()方法的调用问题
    深入理解Java Proxy机制(转)
    IP、子网的详述 ——IP分类、网关地址,子网掩码、子网作用(转)
    getRequestDispatcher()与sendRedirect()的区别
  • 原文地址:https://www.cnblogs.com/wangsirde0428/p/14322516.html
Copyright © 2011-2022 走看看