如何用Python生成5组不重复的随机6位由大小写字母、数字组成的验证码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


方法一

采用Python内置函数chr()来生成大小写字母及数字,chr()可将ASCII码转换成对应的Unicode字符

生成0-9数字

#0的ASCII码为48,9的ASCII码为57
number_list = [chr(i) for i in range(48,58)]

输出结果:

[‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’]

生成A-Z大写字母

#A的ASCII码为65,Z的ASCII码为90
upper_list = [chr(i) for i in range(65,91)]

输出结果:

[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’]

生成a-z小写字母

#a的ASCII码为97,z的ASCII码为122
lower_list = [chr(i) for i in range(97,123)]

输出结果:

[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’]

完整代码如下:

#这里\的意思是,该行还没写完,接着下一行的内容
list1 = [chr(i) for i in range(48,58)] \
      + [chr(i) for i in range(97,123)] \
      + [chr(i) for i in range(65,91)]

code_set = set()#使用集合实现不重复的验证码

for i in range(5):
    #join()函数:用于连接字符串序列,"".join():直接连接,不用指定连接符或空格拼接字符
    #random.choices():可随机选择多个元素,返回一个新列表,k=6:要选择的元素数量,默认值为1
    code = "".join(random.choices(list1,k = 6))
    code_set.add(code)

print(code_set)

方法二

采用String模块中的ascii_letters和digits方法来生成所有字母和数字。其中,ascii_letters:生成所有大小写字母;digits:生成0~9数字。

生成字母a-z和A-Z,以及生成数字0-9

chars = string.ascii_letters + string.digits

运行结果:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

完整代码如下:

import random
import string

chars = string.ascii_letters + string.digits #chars是字符串

code_set = set()

for i in range(5):
    code = random.choices(chars,k = 6)
    code_set.add("".join(code))

print(code_set)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值