Python - 生成随机字符串、数字、字母等 - 进阶之路 - Day03_lixiang5453的博客-程序员ITS304_python随机生成字母

技术标签: random  python  Python 标准库  string  pycharm  进阶之路  

一、 Python随机函数random使用详解

在python中用于生成随机数的模块是 random ,在使用前需要 import。

注意: 以下代码在 Python3.6 下测试通过, 下面看下它的用法。

1、random.random

random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0

#!/usr/bin/python
import random
# 生成第一个随机数
print ("random 1 : ", random.random())
# 生成第二个随机数
print ("random 2 : ", random.random())

结果:

random 1 :  0.3558774735558118
random 2 :  0.46006891154492147

2、random.uniform

random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: b <= n <= a。如果 a <b, 则 a <= n <= b。

import random
print (random.uniform(1, 10))  
print (random.uniform(10, 1))

结果:

2.1520386126536115
3.1391272747538731

3、random.randint

random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b,

注意: 下限必须小于上限

import random
print (random.randint(11, 20))  #生成的随机数n: 11 <= n <= 20  
print (random.randint(20, 20))  #结果永远是20

结果:

11
20

4、random.randrange

random.randrange的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。

import random
print (random.randrange(10, 18, 2))

结果:

14

5、random.choice

random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。有关sequence可以查看python手册数据模型这一章

import random
print (random.choice("Pythontab.com"))
print (random.choice(["python", "tab", "com"]))
print (random.choice(("python", "tab", "com")))

结果:

t
python
tab

6、random.shuffle

  random.shuffle的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱。如:

import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(list)
print (list)

结果:

[4, 1, 9, 3, 2, 7, 10, 6, 8, 5]

7、random.sample

  random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。

import random
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
slice = random.sample(list, 5)  #从list中随机获取5个元素,作为一个片断返回  
print (slice) 
print (list) #原有序列不会改变。

结果:

[8, 2, 6, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

二、string 模块生成随机数的几个常用函数 

# digits 生成所有的数字 0123456789
print(string.digits)

# ascii_letters 生成 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_letters)

# ascii_lowercase 生成 abcdefghijklmnopqrstuvwxyz
print(string.ascii_lowercase)

# ascii_uppercase 生成 ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_uppercase)

# punctuation 所有的特殊字符
print(string.punctuation)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lixiang5453/article/details/120171543

智能推荐

Laravel路由设置_进击的递归的博客-程序员ITS304_laravel 路由配置

Laravel路由设置创建路由路由的作用是在用户访问指定页面时将页面URL匹配到被执行的控制器或匿名函数。默认情况下,所有的Laravel路由都定义在app/Http/routes.php。&lt;?phpuse App\Task;use Illuminate\Http\Request;/** * Display All Tasks */Route::get('/', function () { //});/** * Add A New Task */Route::

C/C++ 字符串比较——区分大小写和不区分大小写_n大橘为重n的博客-程序员ITS304_c不区分大小写对比字符串

一、区分大小写一般我们常用的字符串比较函数都是区分大小写的。我们这里只介绍strcmp函数,在windows和linux下函数名和用法都一样。原型:extern int strcmp(const void *s1, const void *s2);功能:用于比较两个字符串并根据比较结果返回整数。用法:基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str...

solidworks装配体改为柔性_SOLIDWORKS 2020 装配体——柔性零部件_weixin_39521835的博客-程序员ITS304

这里是厦门智网科技有限公司,致力于为企业打造3D数字化研发管理平台。柔性零部件将零件零部件定义为柔性,以便通过装配体几何体来驱动柔性零部件的几何体。例如,可以在装配体上下文中对弹簧建模,其中弹簧长度由装配体中的外部参考驱动。 将弹簧插入另一个装配体中,其中弹簧显示有上下文之外的参考。 可以使用使零件成为柔性工具将上下文之外的参考重新映射到第二个装配体。 因此,弹簧由第二个装配体驱动,而不...

myeclipse 10 j安装了JDK1.7,java编译器无法选择到1.7的问题_博大的Java世界的博客-程序员ITS304

java程序编写,在eclipse中会自动编译,编译的版本在preferrence-->java-->compiler选择具体版本,这时你写程序时自动编译用的jdk就是这个版本的jdk,这是编译环境,编译默认是自动编译,你按ctrl+s时就会编译代码,编译后如果你run as,那么这时就会交给jvm进行运行,就是运行环境,如果这时运行环境和编译环境版本不一致,那么是运行不了的,会报clas版本加载

docker 相关_张立飞7953的博客-程序员ITS304

安装docker:卸载:sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logro...

随便推点

ORM思想解析_牛迁迁的博客-程序员ITS304_orm编程思想

ORM 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 —— [ 百度百科 ]广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。 狭义上

面试总遇到高并发、分布式的问题但是自己工作中不接触,自学又不深入,怎么办?_普通网友的博客-程序员ITS304

背景面试总会遇到一些关系高并发、分布式的问题,可是自己工作中不接触,自学又不深入,这可怎么办?分布式架构的知识太庞大了,小匠也是管中窥豹,结合自己的经验阐述一下自己的想法。结合我自己的一些面试经历,从分布式系统的构建体系说一下可能遇到的问题,涉及的技术和解决方案,这便是分布式系统的重点,也是面试的重点。现象我们从业务场景入手,用户越来越多,单个系统的内存、磁盘、CPU无法满足业务的需求的时候,需要把单机变成多机来解决问题,那么就需要引入分布式横向的扩充机器以增加吞吐量。针对不同的业务的需

工具|渗透测试之5种工具分享(Shiro插件、CTFR、JR-scan、dirsearch-Web等)_zhangge3663的博客-程序员ITS304_shiro检测工具

工具目录1.BurpShiroPassiveScan是一款基于BurpSuite的被动式shiro检测插件;2.reconftw是对具有多个子域的目标执行全面检查的脚本;3.CTFR是一款不适用字典攻击也不适用蛮力获取的子域名的工具;4.JR-scan是一款一键实现基本信息收集,支持POC扫描,支持利用AWVS探测的工具5.dirsearch-Web是一种成熟的命令行工具,旨在暴力破解Web服务器中的目录和文件1.BurpShiroPassiveScan介绍BurpShiro

Oracle用户创建、赋权、查询及删除操作_BigSmartDing的博客-程序员ITS304_oracle用户授权增删改查

1. 查看所有用户信息SQL&gt; SELECT * FROM dba_users;2. 创建test用户,密码设置为123456通常会在后面跟上tablespace,指定用户的默认表空间,users为默认表空间SQL&gt; CREATE USER test identified BY 123456 DEFAULT tablespace users;创建完之后不能登录需赋予权限3. 赋予权限赋予dba权限SQL&gt; GRANT dba TO test;赋予普通权限SQL&g

C#-Xamarin的Activity传值与Fragment引用_kiba518的博客-程序员ITS304

前言我们学习任何一个新框架时,肯定都需要学习它的子页面用法,因为子页面是封装公共内容最好的容器。在Xamarin里子页面为Fragment,翻译过来是片段的意思。Fragment下面我们来学习Fragment的用法。首先创建一个类MenuFragment继承Fragment;然后重写他的OnCreateView方法,代码如下:[Activity(Label = "KibaApp")...

nat模式下怎么让其他物理主机访问到宿主机的虚拟机_枣泥馅的博客-程序员ITS304

nat模式下怎么让其他物理主机访问到宿主机的虚拟机在安装宿主机本生有三种模式,分别为:桥接模式:桥接模式是虚拟出一台“物理”主机,ip和宿主机处于一个网段,可以访问外网,可以和在同一网段中的物理主机通信nat模式:nat模式是虚拟出一个和宿主机不同网段(默认情况下是不同网段)的虚拟机,可以访问外网,只可以和宿主机进行通信。仅主机模式:仅主机模式是一个和宿主机不同网段的虚拟机,只可以和宿主机进行通信,不可以访问外网我在创建虚拟机的时使用了桥接模式的网络适配器,但是不知道什.

推荐文章

热门文章

相关标签