一. random的七种基本用法介绍
import random
# 1. random.random(): 零到一之间的浮点数。
print(random.random()) # 0.49652093793196883
# 2. random.uniform(1, 3): 由random.random()的扩展因为其不能指定参数。而random.uniform(1, 3)指定了一到三之间的浮点数, (注意: 返回浮点数。不包括一和三)
print(random.uniform(1, 3)) # 2.3907680967093494
# 3. random.randint(1, 3): 一到三之间的整数。(包括一,包括三, 表示的是开区间)
print(random.randint(1, 3)) # 2
# 4. random.randrange(1, 3): 一到二之间的整数(顾头不顾尾和range一样取不到三)
print(random.randrange(1, 3)) # 1
# 5. random.choice([1, 'logging_test', [4, 5]]): 由你规定的列表里面随机地取出一个值
print(random.choice([1, 'logging_test', [4, 5]])) # logging_test
# 6. random.sample([1, 'logging_test', [4, 5]], 2): 第二个参数指定组合的个数, 指定为二,可以随机把前面的列表中的任意元素两个任意组合。(注意第二个参数必须指定。)
print(random.sample([1, 'logging_test', [4, 5]], 2)) # ['logging_test', 1]
# 7. random.shuffle()
item = [1, 2, 3, 4, 5, 6]
random.shuffle(item) # 随机打乱item这个列表中元素的顺序。
print(item) # [3, 6, 1, 2, 5, 4]
二. 验证码
# 储备知识补充
"""
# 小写字母a-z: 对应的十进制是97到122。
chr(97): 传入一个十进制, 转换成对应的ASCII码表中的一个字符。
ord('a'): 传入一个ASCII码表中的一个字符,转化成一个十进制。
"""
def varify_code(count=6):
import random
res = ''
for i in range(6):
small_letter = chr(random.randint(97, 122))
int_number = str(random.randint(0, 9))
random_res = random.choice([small_letter, int_number])
res += random_res
print(res)
varify_code()
# 优化上面方案: 把上面的字符串的拼接改变成使用列表接收,然后再把列表使用join直接转换成字符串。避免了字符串之间进行拼接操作时需要重新申请内存空间, 从而减少了内存空间的申请。
def varify_code(count=6):
import random
li = []
for i in range(6):
small_letter = chr(random.randint(97, 122))
int_number = str(random.randint(0, 9))
random_res = random.choice([small_letter, int_number])
li.append(random_res)
print(''.join(li))
varify_code()