很多网站的注册登录业务都加入了验证码技术,以区分用户是人还是计算机,有效地防止刷票、论坛灌水、恶意注册等行为。目前验证码的种类层出不穷,其生成方式也越来越复杂,常见的验证码是由大写字母、小写字母、数字组成的六位验证码。
本实例要求编写程序,实现随机生成六位验证码的功能。
本实例的六位验证码由6个字符组成,每个字符都是随机字符,要实现随机字符的功能需要用到随机数模块random。使用random模块生成六位验证码的基本实现思路为:
以上实现思路中的步骤(3)是验证码功能的核心部分,此部分主要实现生成6个随机字符的功能。为确保每次生成的字符类型只能为大写字母、小写字母、数字的任一种,这里可使用1、2、3分别代表这三种类型:
此外,为确保每次生成的是所选类型中的字符,这里需要按三种类型给随机数指定范围,即数字类型对应的数值范围为0~9,大写字母对应的ACSII码范围为65~90,小写字母对应的ACSII码范围为97~122,如此便可以使用randint()函数生成一个随机类型中的随机字符。
完整的代码如下所示:
import random
def verifycode():
code_list = ''
# 每一位验证码都有三种可能(大写字母,小写字母,数字)
for i in range(6): # 控制验证码生成的位数
state = random.randint(1, 3)
if state == 1:
first_kind = random.randint(65, 90) # 大写字母
random_uppercase = chr(first_kind)
code_list = code_list + random_uppercase
elif state == 2:
second_kinds = random.randint(97, 122) # 小写字母
random_lowercase = chr(second_kinds)
code_list = code_list + random_lowercase
elif state == 3:
third_kinds = random.randint(0, 9)
code_list = code_list + str(third_kinds)
return code_list
if __name__ == '__main__':
verifycode = verifycode()
print(verifycode)
以上代码定义了一个生成六位验证码的函数verifycode(),该函数中首先定义了一个空字符串code_list,然后使用for语句控制循环执行的次数,即字符的个数,每次循环的基本过程:根据生成的随机数1、2或3执行不同的分支;生成指定范围内的随机数;将该随机数转换为字符后拼接到code_list中,最后返回code_list。
运行程序,结果如下所示:
vt3199
再次运行程序,结果如下所示:
DfJHeY
上一篇:1-视图Viewer初始化