• python之random模块


    一、模块简介

    python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。

    二、random模块重要函数

    1 )、random() 返回0<=n<1之间的随机实数n;
    2 )、choice(seq) 从序列seq中返回随机的元素;
    3 )、getrandbits(n) 以长整型形式返回n个随机位;
    4 )、shuffle(seq[, random]) 原地指定seq序列;
    5 )、sample(seq, n) 从序列seq中选择n个随机且独立的元素;

    三、random模块方法说明

    random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。

    random.uniform()正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。

    random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,包含上限和下限。

    random.randrange()随机生成一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,包含上限,不包含下限。

    random.choice()可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。

    random.shuffle()如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。

    random.sample()可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。

    四、random模块教程总结

    Python中任何与随机相关的问题,都可以首先考虑random模块,熟悉掌握其中的常用方法,是一个对程序员的最基本要求。

    五、需求实例

    需求:需要造100个,长度为255字节的随机数字(含大写字母,小写字母和数字)。这个时候使用random模块的sample函数+string模块的digits,digits属性可以很好的满足需求:

    >>> import random
    >>> random.sample('abcd', 2)
    ['a', 'd']

    比如上面,从abcd四个字符随机取出2个,就可以看到,第一个参数是一个序列,第二个参数是取的随机数个数,当前其大小要小于len(aList).然后再结合string模块:

    >>> import string
    >>> string.ascii_letters
    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    >>> string.digits
    '0123456789'

    注:以上是python3中调用string模块的属性,python2中查找大小写的属性是strig.letters,如果想查看更多的方法直接使用帮助文档string(help)

    果要凑齐255个字符,则可以这样。

    >>> string.ascii_letters * 4 + string.digits * 5
    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890123456789012345678901234567890123456789'
    >>> len(string.ascii_letters * 4 + string.digits * 5)
    258

    所以用一个脚本来生成就是:

    #Author:qinjaixi
    import random
    import string
    file_data = open('test.txt', 'w')
    for i in range(100):
    data = ''.join(random.sample(string.digits * 5 + string.ascii_letters * 4, 255))
    file_data.write(data + ' ')
    file_data.close()

    这样在文件test.txt文件里面就有100条,长度为255字节的随机字符

    需求实例:实现四个随机字符验证码

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # Author:qinjiaxi
     4 import random
     5 check_code = ''
     6 for i in range(4):
     7     current = random.randrange(0,4)
     8     #字母
     9     if current == i:
    10         tmp = chr(random.randint(65,90))
    11     #数字
    12     else:
    13         tmp = random.randint(0,9)
    14     check_code += str(tmp)
    15 print(check_code)

    另外谈一谈python中的join()方法:

    python中经常会用到join()方法,借这个机会浅谈一下。

    描述

    Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

    语法

    str.join(sequence)

    其中sequence就是一个序列--->在python中序列是指字符串、列表、字典、元组

    返回值

    返回的就是通过str(指定的符号)连接的一个新字符串

    实例

    >>> str = '-'

    >>> str.join('ABC')

    'A-B-C'

    记忆小方法

    str.join(元组、列表、字典、字符串)生成的只能是字符串,所以很多地方很多时候把数据类型转换成字符串可以用join方法。

    1.列表:

    >>> list = ['1', '2', '3']

    >>> ''.join(list)

    '123'

    错误示例:

    >>> list = [1,2,3,4]

    >>> ''.join(list)

    Traceback (most recent call last):

      File "<pyshell#16>", line 1, in <module>

        ''.join(list)

    TypeError: sequence item 0: expected str instance, int found

    错误原因:类型错误,列表的元素必须是字符串

    2.字典

    >>> seq = {'hi':'nihao', 'age':'nianling', 'boy':'young'}

    >>> '-'.join(seq)

    'age-boy-hi'

    可以看到在字典中是使用join方法是直接把key连接起来

    转载请注明出处 每天努力多一点,忧愁少一点,快乐多一点 --->by晴朗sky
  • 相关阅读:
    KVC该机制
    JS多语种方式
    面试经典(1)---翻转字的顺序在一个句子
    正确Linux新手很实用20命令
    代码添加背景音乐的日记
    什么是比特币(Bitcoin)?
    李开复:该算法的重要性
    javascript推断的浏览器类型
    libyuv编
    Linux下将UTF8编码批量转换成GB2312编码的方法
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/9402296.html
Copyright © 2020-2023  润新知