day5-随机数相关:random模块&string模块
一、概述
随机数在程序设计中的属于比较基础的内容,主要用于验证场景(如验证码,生成账号对应的密码等),今天结合random模块和string模块来谈谈python中随机数那些事儿。
二、随机数实现相关模块
2.1 random模块
- random.random() 
 返回一个随机浮点数1 >>> import random 
 2 >>> print(random.random())
 3 0.7998107271564998
 4 >>> print(random.random())
 5 0.7837981404514991
- random.randint(a,b)
 随机返回a到b之间的一个整型数,注意包括b1 >>> print(random.randint(1,3)) 
 2 1
 3 >>> print(random.randint(1,3))
 4 2
 5 >>> print(random.randint(1,3))
 6 1
 7 >>> print(random.randint(1,3))
 8 3
- random.randrange(start, stop, step=1)
 返回一个随机整型数,但不包括stop这个值,start和step为可选项,默认值分别为0和11 >>> print(random.randrange(5,step=2)) 
 2 1
 3 >>> print(random.randrange(5,step=2))
 4 0
 5 >>> print(random.randrange(5,step=2))
 6 1
 7 >>> print(random.randrange(5,step=2))
 8 3
 9 >>> print(random.randrange(1,5,step=2))
 10 1
 11 >>> print(random.randrange(1,5,step=2))
 12 1
 13 >>> print(random.randrange(1,5,step=2))
 14 1
 15 >>> print(random.randrange(1,5,step=2)) #如果start和stop之间的区间太小,然后有设定了start和step,实际取值范围很有限
 16 3
- randome.sample(population, k)
 从Population中随机抽取k个值来,以列表形式输出。注意这里的Population必须为一个序列或列表。1 >>> print(random.sample([1,2,3,4,5],3)) 
 2 [3, 2, 5]
 3 >>> print(random.sample('asldf9090asm',5))
 4 ['a', 'l', 'd', '9', '0']
 5 >>> print(''.join(random.sample('asldf9090asm',5))) #通过join拼接输出即可得到一般的随机数格式
 6 0da09
2.2 string模块
- string.ascii_letters
 返回包括所有字母在内的大小写字符串1 >>> import string 
 2 >>> string.ascii_letters
 3 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
- string.ascii_lowercase
 返回包含所有小写字母在内的字符串1 >>> import string 
 2 >>> string.ascii_lowercase
 3 'abcdefghijklmnopqrstuvwxyz'
- string.ascii_uppercase
 返回包含所有大写字母在内的字符串1 >>> import string 
 2 >>> string.ascii_uppercase
 3 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 4 >>>
- string.digits
 返回0-9数字字符串1 >>> import string 
 2 >>> string.digits
 3 '0123456789'
- string.punctuation
 以字符串形式返回所有特殊字符1 >>> import string 
 2 >>> string.punctuation
 3 '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
三、实战生成随机数
- 结合random和string实现
1 >>> import string,random 
 2 >>> string2=random.sample(string.ascii_letters+string.punctuation,12)
 3 >>> print(''.join(string2))
 4 _oCSe,)dcBm|
 5 >>>
- 增强版
 上述程序虽然基本实现了生成随机数的需求,但是随机数的随机性感觉还是比较low,下面来一个增强版的1 import random,string 
 2 checkcode=''
 3 string1='!@#$%&' #特殊字符
 4 for i in range(4):
 5 current = random.randrange(0,4)
 6 if current != i:
 7 #temp = chr(random.randint(65,99))
 8 temp = ''.join(random.sample(string.ascii_letters+string1, 3))
 9 else:
 10 temp = random.randrange(0,9)
 11 checkcode += str(temp)
 12
 13 print(checkcode)
 14
 15 运行结果:
 16 Lbksxh#ZB%ar增强版程序的不足之处在于随机数的长度不固定,有待完善… 
- 固定长度版
 该版本解决上述增强版中随机数长度不固定的问题,看起来更简单1 # !/usr/bin/env python 
 2 # -*- coding: utf-8 -*-
 3 __author__ = 'Maxwell'
 4
 5 import random,string
 6 checkcode=''
 7 source_string = '@#$%&_'
 8
 9 for i in range(8):
 10 if i % 2 == 0:
 11 temp = ''.join(random.sample(string.ascii_letters + source_string, 2))
 12 else:
 13 temp = str(random.randint(0, 9))
 14 checkcode += temp
 15 print(checkcode)
 16
 17 输出结果:
 18 $G9gp8qg2_C7 #可基本满足随机码的要求了
day5-随机数相关:random模块&string模块的更多相关文章
- random模块/string模块
		一.random模块 random模块可以很容易生成随机数和随机字符串. random.randint(1, 100) # 1-100之间取一个随机数 random.randrange(1, 100) ... 
- Python random模块&string模块  day3
		一.random模块的使用: Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. 1.常用函数: (1)random.random() 用于生成一个0到1 ... 
- random和string模块
		random模块import randomprint(random.random()) #随机打印一个浮点数print(random.randint(1,5)) #随机打印一个整数,包括5print( ... 
- s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译
		时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ... 
- 模块 string 常用序列字符
		自从知道string模块后再也不用abcd了 >>> string.digits #数字 '0123456789' >>> string.ascii_letters ... 
- Python 3之str类型、string模块学习笔记
		Windows 10家庭中文版,Python 3.6.4, Python 3.7官文: Text Sequence Type — str string — Common string operatio ... 
- string模块
		string模块 string模块包括了一些字符串常量, 并且有str对象的功能,主要用来生成一些字符串.字符串格式化等 参考: http://python.usyiyi.cn/python_278/ ... 
- python标准库介绍——4      string模块详解
		==string 模块== ``string`` 模块提供了一些用于处理字符串类型的函数, 如 [Example 1-51 #eg-1-51] 所示. ====Example 1-51. 使用 str ... 
- Python之string模块(详细讲述string常见的所有方法)
		相信不少学习python的程序员都接触过string模块 string模块主要包含关于字符串的处理函数 多说无益,初学python的小伙伴还不赶紧码起来 接下来将会讲到字符串的大小写.判断函数. 以及 ... 
随机推荐
- 浅谈 Python 的 with 语句(转)
			add by zhj: 上下文管理器是对try-except-finally的再封装而已,只能算是优化代码这一级别的feature 原文:http://www.ibm.com/developerwor ... 
- 迭代器模拟for循环
			s = 'wgugq wgugfgfqwihqwohd' it = s.__iter__() # 生成一个迭代器 while 1: try: # 尝试 el = it.__next__() # 下一个 ... 
- 解决python中write()函数向文件中写中文时出现乱码的问题
			今天看<python编程从入门到实践>的第10章文件.异常,在做练习的时候,向文件中写内容,但是写中文就不行,后来在百度上查了众多资料,解决方法如下: 解决:在open()函数中添加一个e ... 
- 3个Activity间的切换
			package com.yarin.android.Examples_03_01; import android.app.Activity; import android.content.Intent ... 
- JS操作时间 - UNIX时间戳简单介绍
			准备知识 GMT(Greenwich Mean Time) - 格林尼治时间.UTC(Universal Time Code) - 国际协调时间.PST(Pacific Standard Time,太 ... 
- C++11中的array
			stl中的vector功能相比普通数据而言是要强大很多的,代价是需要动态的内存管理机制(分配,再分配,释放). 而有时候我们只需要普通的数组而已,这就带来了效率上的浪费. array就是用来代替普通的 ... 
- Cpython-并发编程
			阅读目录 一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 ... 
- 14链表中倒数第k个结点
			题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路: 快慢指针 快指针 先走k 步, 然后快慢指针一起走 当快指针走到null 时, 慢指针就是所求的倒数第k个节点 tips: 判断k是否 ... 
- 谁说程序员不懂爱情【Her】
			2014.8.17日 我和我女朋友恋爱两周年的日子.走到今天很不容易,我很珍惜. 就想趁这机会,尽自己能力做一个特别的礼物. 这款应用两周前就开始计划了.也熬了几个晚上.接触wp开发时间不长,第一款应 ... 
- 机器学习中的numpy库
			日常学习中总是遇到数据需要处理等问题,这时候我们就可以借助numpy这个工具来做一些有意思的事. 1.生成随机数的几种方式 x=np.random.random(12) ###生成12 ... 
