参考女神博客链接:https://www.cnblogs.com/Eva-J/articles/11266790.html?tdsourcetag=s_pcqq_aiomsg#_label6
随机验证码小白版本
# -*- coding: utf-8 -*- # 2019/8/5 13:56 import random # 小白版 yan='' for i in range(4): #current=random.randint(0,9) #生成0-9的随机数 current=random.randrange(0,4) # 生成0-4的随机数,如果和i相等,随机添加字母或数字 if current == i: tmp = chr(random.randint(65,90)) else: tmp = random.randint(0,9) yan+=str(tmp) print("生成的4位随机验证码为:", yan)
随机验证码女神版本
# -*- coding: utf-8 -*- # 2019/8/5 13:56 import random # 女神版 def verification_code(): '''生成随机验证码''' code = '' # 初始化验证码的值为空 for i in range(4): # 循环获取4个随机数,生成4位随机验证码 num = random.randint(0, 9) # 生成0-9的随机数 alf = chr(random.randint(65, 90)) # 随机生成大小写字母,通过字母的ascii值获取 tmp = random.choice([num, alf]) # 随机在数字和字母中获取一位字符 # code = "".join([code, str(tmp)]) # 将随机获取的字符拼接 code +=str(tmp) return code yan = verification_code() print("生成的4位随机验证码为:", yan)
随机验证码女神升级版本,可以自定义验证码的模式,可以是纯数字,或者是带大小写字母的
# -*- coding: utf-8 -*- # 2019/8/5 13:56 import random # 升级版 def code(n=4,alpha=True): '''自定义版''' s = '' for i in range(n): num = random.randint(0,9) if alpha: alpha_lower = chr(random.randint(97,122)) alpha_upper = chr(random.randint(65,90)) num = random.choice([num,alpha_lower,alpha_upper]) s += str(num) return s # 默认生成4位,带大小写的随机验证码 ret = code() print(ret) # 生成8位带数字大小写字母的随机验证码 ret = code(8) print(ret) # 生成4位随机数字验证码 ret = code(alpha=False) print(ret) # 生成8位随机数字验证码 ret = code(8,False) print(ret)
随机验证码终极版本
# -*- coding: utf-8 -*- # 2019/8/5 13:56 import random import string from random import choice # 终极版 def Makepass(length=8, chars=string.ascii_letters+string.digits): return ''.join([choice(chars) for i in range(length)]) ret = Makepass() print(ret) ret = Makepass(4) print(ret) ret = Makepass(4,chars=string.digits) print(ret)
抢红包基础版本
# -*- coding: utf-8 -*-
# 2019/8/9 10:22 ''' # 2.发红包 拼手气红包 # 200元 10个 每个人抢到的钱都是随机的 # 每一个人抢到多少钱的概率都平均 ''' import random # 0-20000之间随机取n个不重复的整数 def send_money(money,n): lst = [] money = money*100 ret = random.sample(range(1,money),n-1) ret.sort() ret.insert(0,0) ret.append(money) for i in range(len(ret)-1): val = ret[i+1] - ret[i] val = val/100 lst.append(val) return lst
print(send_money(100,5))
抢红包升级版本,利用生成器来节省内存使用。
# -*- coding: utf-8 -*- # 2019/8/9 10:22 ''' # 2.发红包 拼手气红包 # 200元 10个 每个人抢到的钱都是随机的 # 每一个人抢到多少钱的概率都平均 ''' import random def red_envelope(money=200,n=10): # money表示要发多少钱 ,n表示要发几个红包 '''抢红包''' money = money * 100 # 可以抢到分,将钱数乘以100,返回值时再除以100就能取到分了。 line_list = random.sample(range(1,money),n-1) # sample不重复 的从1-199中随机取9个数,返回list。 line_list.sort() # 将list从小到大排序 line_list.insert(0,0) # 在list最前面插入0 line_list.append(money) # 在list最后面加入200,list的长度为11,这样就能完整的在0-200区间获取10个红包了,list之间的值加起来刚好为200。 for i in range(len(line_list)-1): red = line_list[i+1] - line_list[i] # 第二个点减去第一个点的值作为第一个红包,以此类推。 red = red/100 # 再把分转换成元 yield red # 利用生成器来节省内存使用 # money = money - red*100 # print('红包余额:',money/100) if __name__ == '__main__': money=50 n=10 red = red_envelope(money,n) for i in range(n): print('第%s个红包%s元!'% (i+1,red.__next__())) # res=list(red) # print(res) # print(sum(res))