一、概述

随机数在程序设计中的属于比较基础的内容,主要用于验证场景(如验证码,生成账号对应的密码等),今天结合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之间的一个整型数,注意包括b
      1 >>> 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和1
      1 >>> 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模块的更多相关文章

  1. random模块/string模块

    一.random模块 random模块可以很容易生成随机数和随机字符串. random.randint(1, 100) # 1-100之间取一个随机数 random.randrange(1, 100) ...

  2. Python random模块&string模块 day3

    一.random模块的使用: Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. 1.常用函数: (1)random.random() 用于生成一个0到1 ...

  3. random和string模块

    random模块import randomprint(random.random()) #随机打印一个浮点数print(random.randint(1,5)) #随机打印一个整数,包括5print( ...

  4. 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时间 ...

  5. 模块 string 常用序列字符

    自从知道string模块后再也不用abcd了 >>> string.digits #数字 '0123456789' >>> string.ascii_letters ...

  6. Python 3之str类型、string模块学习笔记

    Windows 10家庭中文版,Python 3.6.4, Python 3.7官文: Text Sequence Type — str string — Common string operatio ...

  7. string模块

    string模块 string模块包括了一些字符串常量, 并且有str对象的功能,主要用来生成一些字符串.字符串格式化等 参考: http://python.usyiyi.cn/python_278/ ...

  8. python标准库介绍——4 string模块详解

    ==string 模块== ``string`` 模块提供了一些用于处理字符串类型的函数, 如 [Example 1-51 #eg-1-51] 所示. ====Example 1-51. 使用 str ...

  9. Python之string模块(详细讲述string常见的所有方法)

    相信不少学习python的程序员都接触过string模块 string模块主要包含关于字符串的处理函数 多说无益,初学python的小伙伴还不赶紧码起来 接下来将会讲到字符串的大小写.判断函数. 以及 ...

随机推荐

  1. 笔记-django学习链接

    form表单学习 https://www.cnblogs.com/weiman3389/p/6225075.html python字符串replace()方法 https://www.cnblogs. ...

  2. django博客项目5:博客首页视图(2)

    真正的 Django 博客首页视图 在此之前我们已经编写了 Blog 的首页视图,并且配置了 URL 和模板,让 Django 能够正确地处理 HTTP 请求并返回合适的 HTTP 响应.不过我们仅仅 ...

  3. django_视图层/2.0路由层/虚拟环境

  4. sys模块 logging模块 序列化模块

    一 :sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...

  5. linux一路填坑...

    1.安装ubuntu 从ubuntu9.0开始,一路更新,越来越垃圾,更可恶的是工作上经常指定特定的版本,于是乎,我电脑里装了n个版本的ubuntu. Win7 + Ubuntu 15.10 1)装完 ...

  6. Django相关介绍

    先认识一下MVC框架 MVC的框架模式,即模型M,视图V和控制器C.他们之间以一种插件似的,松耦合的方式连接在一起. Model(模型)是应用程序中用于处理应用程序数据逻辑的部分. 通常模型对象负责在 ...

  7. Bootstrap实现的页面

    实现的效果如图,使用bootstrap需要至少三个文件 去bootstrap网上下载,然后使用这三个文件可以了 使用方式,通过标签,class命名来引用已经定制好的html样式 <!DOCTYP ...

  8. LeetCode:课程表II【210】

    LeetCode:课程表II[210] 题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一 ...

  9. rails 单数 复数 大写 小写转换 下划线 驼峰命名

    downcase 变小写 pluralize 复数 singularize 单数 camelcase 驼峰 underscore : “MyScore”.undersocre  ==> my_s ...

  10. php内存管理机制、垃圾回收机制

    一.内存管理机制 先看一段代码: <?php //内存管理机制 var_dump(memory_get_usage());//获取内存方法,加上true返回实际内存,不加则返回表现内存 $a = ...