随机的乐趣 - Python随机函数库random

自动化测试时,有如下一些情况:

  1. 注册账号时,如果已经注册过的账号,再次运行脚本时就会失败。
    为了避免这种情况,我们可以使用时间戳或者随机函数增加一些随机内容。
  2. 界面上有很多数据,我们不关注具体数据的执行结果,只关注操作过程。
    我们就可以批量提取数据(find_elements),然后随机选择一条数据操作。

这些情况都会用到随机函数库。

Python 中的随机函数库 random,提供了各种随机数据生成(int、float、string、list等)。

random库是 Python 自带的一个标准库。直接引入即可使用。

import random

该库中主要函数如下:

random()

生成一个0 ~ 1之间的随机浮点数,范围 0 <= n < 1.0

注意,函数名也叫 random, 和库名一样。

>>> random.random()
0.5449476270094615

uniform(a, b)

uniform 方法, 返回 a 到 b 之间的随机浮点数,范围 [a, b] 或 [a, b),取决于四舍五入,a不一定要比b小。

>>> random.uniform(50, 100)
76.81733455677832
>>> random.uniform(100, 50)
52.98730193316595

randint(a, b)

randint 方法, 返回a 到 b之间的整数,范围 [a, b],注意:传入参数必须是整数,a 一定要比 b 小。

>>> random.randint(50, 100)
54
>>> random.randint(100, 50)
# ValueError: empty range for randrange() (100,51, -49)

randrange([start], stop[, step])

randrange 函数返回一个区间内的整数,可以设置step。

注意,只能传入整数。

random.randrange(10, 100, 2)
16
# 结果相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。

startstop 参数是可选参数。

>>>random.randrange(100)
58
# 随机取 0 到 100 中的一个整数
>>> random.randrange(80, 100)
99
# 随机取 80 到 100 之间的一个整数

choice(sequence)

choice 从序列 sequence中随机获取一个元素,list,tuple,字符串都属于序列。

random.randrange(10, 100, 2) 在结果上与 random.choice(range(10, 100, 2) 等效。

>>> random.choice(("stone", "scissors", "paper"))
'stone'
# 从元组中取值
>>> random.choice(["stone", "scissors", "paper"])
'scissors'
# 从列表中取值
>>> random.choice("Random")
'm'
# 从字符串中取值

shuffle(x)

shuffle 用于将列表x中的元素打乱,俗称为洗牌。会修改原有序列。

>>> poker = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
>>> random.shuffle(poker)
>>> poker
['4', '10', '8', '3', 'J', '6', '2', '7', '9', 'Q', '5', 'K', 'A']

sample(sequence, k)

sample 函数从指定序列中随机获取k个元素作为一个列表返回,sample函数不会修改原有序列。

>>> poker = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
>>> random.sample(poker, 5)
['4', '3', '10', '2', 'Q']

可以借助 String 模块中定义的字符串常量来生成随机的字符串。

>>> import string
>>> string.digits
'0123456789'    
# 数字
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 大小写字母
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
# 特殊符号

随机生成账号:

import string
import random

def generate_user(n):
    '''生成长度为 n 的随机账号'''
    # 数字+大小写字母组合
    s = string.digits + string.ascii_letters
    words = random.sample(s, n)
    return ''.join(words)

print(generate_user(8))
# 4ruZHV6g

练习:

  1. 剪刀石头布小游戏:电脑随机出石头、剪刀、布,玩家通过输入石头、剪刀、布。按照剪刀石头布的规则,判断玩家赢还是电脑赢,相同则输出平手。
  2. 编写一个猜数的小游戏
    (1)要猜的数是在1到100之间的随机整数
    (2)如果用户在3次(含)之内猜出来,打印出:恭喜你,猜对了,您太聪明了!
    (3)如果用户在4-7次(含)之内猜出来,打印出:恭喜你,猜对了,不错呦!
    (4)如果用户7次还没猜出来,退出程序,打印出:太笨了,7次都没猜出来!
    (5)每次猜错了,要告知用户:太大了,大小了
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值