07-05 random模块

一. 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()
posted @ 2020-03-30 21:20  给你加马桶唱疏通  阅读(112)  评论(0编辑  收藏  举报