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
原文地址:https://www.cnblogs.com/qinlangsky/p/9402296.html