zoukankan      html  css  js  c++  java
  • 生成随机验证码的方法

    1、借助列表

    import random
    
    def random_code():
        random_list = []
        for i in range(4):
            ra = random.randrange(4)
            if ra == i:
                random_list.append(chr(random.randrange(97,122)))
            else:
                random_list.append(str(random.randrange(0,9)))
        code = "".join(random_list)
        return code
    
    result = random_code()
    print(result)

      上述代码实现了随机验证码的功能,但是只能生成包含小写字母的随机验证码;并且我们也是借助列表完成的,字符串的拼接加上列表,字符串jion()方法,生成了随机验证码。下面我们来尝试也生成大写验证码的方法。

    import random
    
    def random_code():
        random_list = []
        for i in range(4):
            ra = random.randrange(4)
            if ra == i:
                random_list.append(chr(random.randrange(97,122)))
            elif ra > i:
                random_list.append(str(random.randrange(0,9)))
            else:
                random_list.append(chr(random.randrange(65,90)))
        code = "".join(random_list)
        return code
    
    result = random_code()
    print(result)

      由于数据之间有三种关系,大于,小于,等于,这样把每种情况都进行分析,就能生成三种随机验证码;当等于的时候生成小写验证码,等大于的时候生成数字,当小于的时候生成大写字母验证码,这样就实现了我们在网站上面常见的验证码的形式。

    2、字符串拼接

    import random
    
    def verification_code():
        code = ""
        for i in range(1,5):
            ra = random.randint(1,4)
            if ra == i:
                string = chr(random.randrange(97,122))
            elif ra > i:
                string = chr(random.randrange(65,90))
            else:
                string = str(random.randint(0,9))
            code += string
    
        return code
    
    result = verification_code()
    print(result)

      此方法就是使用字符串的拼接生成的随机验证码,其实上述方法的本质都是一样的,可能第一种方法的效率还会更高一点,但是都实现了随机验证码的功能。

    二、生成账单流水号的方法

    import datetime,time
    
    def serial_number():
        serial = "{0}{1}".format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"),str(int(time.time())))
        return serial
    
    message = serial_number()
    print(message)

      账单流水号是由日期datetime模块和time模块构成,由于流水号就是当时购物的时间串号,而且永远不会重复。

        time模块中的起始时间是从1970年开始的

    逻辑判断函数:

    def input_date(msg,default_date):
        '''
        对输入的日期进行判断是否正确,yyyy-mm--dd or yyyy-m-d
        :param msg:         输入提示信息
        :param default_date:    默认日期
        :return:           返回日期str类型
        '''
        check_flag = False
        while not check_flag:
            strdate = input(msg).strip()
            if not strdate:       #如果用户输入的不是空,则不执行,如果用户输入的是空,则执行
                strdate = default_date
            try:
                date_list = strdate.split("-")
                print("33[33mdate_list:{0}33[0m".format(date_list))
                result = date(int(date_list[0]),int(date_list[1]),int(date_list[2]))
                print("33[31mresult:{0}33[0m".format(result))
                check_flag = True
            except ValueError:
                show_message("输入日期不合法,请重新输入!","ERROR")
                continue
        return result.strftime("%Y-%m-%d")

    输出如下:

    请输入您要确认的日期:
    date_list:['2017', '5', '9']
    result:2017-05-09
    2017-05-09

    上述代码实现的是,将字符串的日期格式,转换为真正的日期格式,上面代码中:

    date_list = strdate.split("-")
    print("33[33mdate_list:{0}33[0m".format(date_list))
    result = date(int(date_list[0]),int(date_list[1]),int(date_list[2])) print("33[31mresult:{0}33[0m".format(result))
    上述代码中,datetime模块中的date()方法将数值转换为日期格式,和Excel中的date()函数功能是一样的

    datetime模块中的date()方法天生具有检测日期输入是否合法的功能,datetime.date(year,month,day)里面约定了month的范围是1-12,同时day也是
    有约定的,如下:
    >>> datetime.date(2017,15,36)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: month must be in 1..12
    >>> datetime.date(2017,12,40)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: day is out of range for month
    可以看出,如果月份,天数错误的话,会提示ValueError错误,这样就能够让我们方便很多检测错误,只要使用try,except就能让用户重新输入正
    确的日期。

  • 相关阅读:
    这样的UI UX设计师描述你满意吗?
    原型设计建议规范(二)
    优质产品需求文档(PRD)写作三大原则
    一流用户体验设计师的6个共同点
    在原型设计上,UI和UX设计师有哪三个区别?
    UI设计:掌握这6点,轻松0到1
    优秀UX设计师的八条黄金法则
    hdu1686Oulipo(KMP)
    hdu1711Number Sequence(KMP)
    hdu2612Find a way
  • 原文地址:https://www.cnblogs.com/gengcx/p/7181395.html
Copyright © 2011-2022 走看看