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("\033[33mdate_list:{0}\033[0m".format(date_list))
result = date(int(date_list[0]),int(date_list[1]),int(date_list[2]))
print("\033[31mresult:{0}\033[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("\033[33mdate_list:{0}\033[0m".format(date_list))
result = date(int(date_list[0]),int(date_list[1]),int(date_list[2]))
print("\033[31mresult:{0}\033[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就能让用户重新输入正
确的日期。