Python random模块&string模块 day3

时间:2022-10-25 20:35:06

一、random模块的使用:

Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。

1、常用函数:

(1)random.random() 

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

(2)random.uniform(a,b)

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

(3)random.randint(a,b)

  用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

(4)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) 等效。

(5)random.choice(sequence)

  从序列中获取一个随机元素,。

(6)random.shuffle(x[, random])

  用于将一个列表中的元素打乱,洗牌

(7)random.sample(sequence, k)

  从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列,返回的为一个list

import random

print( random.random() )             # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数
print( random.randrange(0,101,2) ) # 随机选取0到100间的偶数
print( random.choice('tomorrow') ) # 从序列中随机选取一个元素
print(random.sample('',3)) #从序列中随机选取3个返回一个list
a=[1,3,5,6,7] # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)

2、举例:产生5个6位数的随机验证码

#方法1:使用randint函数,可产生随机的整数
# result = random.randint(100000,999999)#无法产生003212这样的验证码
import random
def sms_code():
result = random.randint(1, 999999)#随机整数
verify_code=str(result).zfill(6)#可以产生以0开头的六位验证码
return verify_code for i in range(5):
print(sms_code())
#方法2:使用sample函数,随机取几个,返回的是一个list
import random
def verify_code():
random_list = random.sample('', 6)
result = ''.join(random_list)
return result
for i in range(5):
print(verify_code())

二、string模块的使用:

import string #数字模块
print(string.digits)#所有的整数
print(string.ascii_lowercase)#小写字母
print(string.ascii_uppercase)#大写字母
print(string.ascii_letters)#大写字母+小写字母
print(string.punctuation)#所有的特殊字符
print(random.choice(string.digits))#随机取一个数

举例:

1、产生一批用户名,长度在6-12之间,产生的这一批用户名不能重复,用户名需要以字母开头,可以包含字母和数字

#分析:
#1、循环,你传入的数字是多少,就产生多少条
#2、随机产生一个6-12之间的数字当作长度
#3、不能重复 就用集合
#4、判断产生的用户名第一个元素是否不为整数
import random
import string def gen_username(num):
all_username =set() #定义一个空集合,存所有的用户名
while len(all_username) != num:
length = random.randint(6,12) #随机产生长度
temp = random.sample(string.digits+string.ascii_letters,length)#用户名
username = ''.join(temp)
if not username[0].isdigit():
all_username.add(username)
return list(all_username) usernames= gen_username(10)
print(usernames)

2、产生一批163邮箱,邮箱的用户名部分长度在6-12之间,产生的这一批用户名不能重复,用户名需要以字母开头,必须包含字母和数字,将结果写入文件中

import random
import string def op_file(file_name,content=None):
if content: # 有content,写文件
with open(file_name,'w',encoding='utf-8') as fw:
fw.write(content)
else:
with open(file_name,encoding='utf-8') as fr:
return fr.read() def gen_username(num):
all_username =set() #定义一个空集合,存所有的用户名
while len(all_username) != num:
length = random.randint(6,12) #随机产生长度
temp = random.sample(string.digits+string.ascii_letters,length)#用户名
if set(temp) & set(string.digits) and set(temp) &set(string.ascii_letters) and not temp[0].isdigit():
username = ''.join(temp)
all_username.add(username + '@163.com' + '\n') # 加\n是为了写入文件里查看方便
return list(all_username) usernames= gen_username(10)
usernames_str = ''.join(usernames)
op_file('usernames.txt',usernames_str)

Python random模块&string模块 day3的更多相关文章

  1. day5-随机数相关:random模块&amp&semi;string模块

    一.概述 随机数在程序设计中的属于比较基础的内容,主要用于验证场景(如验证码,生成账号对应的密码等),今天结合random模块和string模块来谈谈python中随机数那些事儿. 二.随机数实现相关 ...

  2. random模块&sol;string模块

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

  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. Python中的string模块的学习

    代码为主,相信有python基础的都能看懂: ? [python] view plain copy >>> import string   >>> string.a ...

  6. python 加密算法及其相关模块的学习(hashlib&comma;random&comma;string&comma;math)

    加密算法介绍 一,HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种 ...

  7. python加密算法及其相关模块的学习(hashlib&comma;RSA&comma;random&comma;string&comma;math)

    加密算法介绍 一,HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种 ...

  8. 【Python】模块学习之利用string模块造测试数据

    背景 测试过程中需要一些随机数据,使用到了python中的string模块,记录一下 #! /usr/bin/python # coding:utf-8 """ @aut ...

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

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

随机推荐

  1. xml编辑器

    cstring转cha型方法在mfc中用过可行 int CstringToch(CString str, char *ch) { assert(ch); memset(ch, 0, sizeof(ch ...

  2. 原创QQ影音DLL劫持漏洞&plus;动画实战教程

    1.什么是DLL DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型.在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成 ...

  3. 修改dll版本号处理未能加载&OpenCurlyDoubleQuote;&ast;&ast;&ast;&ast;&ast;&ast;”,或找不到动态链接库依赖的项

    <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken=& ...

  4. &lbrack;转&rsqb; Android实时抓包分析 &colon; 善用adb调试桥

    Android实时抓包分析 : 善用adb调试桥   谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...

  5. HDU 3544 &lpar;不平等博弈&rpar; Alice&&num;39&semi;s Game

    切巧克力的游戏,想得还是不是太明白. 后者会尽量选前着切后其中小的一块来切,那么先手须尽量取中间来切. So?题解都是这么一句话,不知道是真懂了还是从别人那抄过来的. 后来找到一个官方题解,分析得比较 ...

  6. Binding在WPF中的使用

    闲来无事,不想打DOTA,在这里小小研究下wpf中关于Binding的东西. 咯咯 在我们印象中,Binding的意思是“绑定”,这个“绑”大概取自于Bind这个单词吧,这么理解的话就是以音译英了,没 ...

  7. HDOJ&lpar;HDU&rpar; 1673 Optimal Parking

    Problem Description When shopping on Long Street, Michael usually parks his car at some random locat ...

  8. if else 与switch case判断

    基础数据类型(四类八种 ) 不能为null. 整数型 byte 取值范围2的8次方 short 取值范围2的16次方 int 取值范围2的32次方 一般用int long 取值范围2的64次方 浮点型 ...

  9. 循环更新sqlserver数据库表ID

    DECLARE @a INTDECLARE aaa CURSOR for select columnID from LNDB_COLUMN_INFO where columnID BETWEEN 22 ...

  10. RPC通信原理

    什么是 RPCRPC(Remote Procedure Call Protocol)远程过程调用协议.通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算上的某个过程或函数,就像调用本地应 ...