随机生成验证码--课后程序(Python程序开发案例教程-黑马程序员编著-第8章-课后作业)

该文章介绍了一个Python程序,用于随机生成包含大写字母、小写字母和数字的六位验证码。程序通过导入random模块,根据随机数决定生成字符的类型,并利用ASCII码转换为对应字符,确保每次生成的验证码不同。
摘要由CSDN通过智能技术生成

实例1:随机生成验证码

很多网站的注册登录业务都加入了验证码技术,以区分用户是人还是计算机,有效地防止刷票、论坛灌水、恶意注册等行为。目前验证码的种类层出不穷,其生成方式也越来越复杂,常见的验证码是由大写字母、小写字母、数字组成的六位验证码。

本实例要求编写程序,实现随机生成六位验证码的功能。

实例目标

  1. 掌握导入模块的方式
  2. 掌握random模块的基本用法

实例分析

本实例的六位验证码由6个字符组成,每个字符都是随机字符,要实现随机字符的功能需要用到随机数模块random。使用random模块生成六位验证码的基本实现思路为:

  1. 导入random模块
  2. 创建一个空字符串code_list。
  3. 生成6个随机字符逐个拼接到code_list后面。

以上实现思路中的步骤(3)是验证码功能的核心部分,此部分主要实现生成6个随机字符的功能。为确保每次生成的字符类型只能为大写字母、小写字母、数字的任一种,这里可使用1、2、3分别代表这三种类型:

  1. 若产生随机数1,代表生成大写字母;
  2. 若产生随机数2,代表生成小写字母;
  3. 若产生随机数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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaozhima-dun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值