qinlangsky

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 + \'\n\')
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连接起来

分类:

技术点:

相关文章:

  • 2022-02-07
  • 2022-01-21
  • 2021-12-22
  • 2022-01-20
  • 2021-06-28
猜你喜欢
  • 2021-11-23
  • 2021-11-17
  • 2021-12-26
  • 2021-12-15
  • 2021-11-23
相关资源
相似解决方案