Python生成随机验证码,大乐透号码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python⽣成随机验证码,⼤乐透号码
实例笔记之⽣成随机号码
随机⽣成验证码
⽰例代码:
import random # 导⼊标准模块中的random
if __name__ == '__main__':
check_code = "" # 保存验证码的变量
for i in range(4): # 循环4次
index = random.randrange(0, 4) # 随机⽣成0~3中的⼀个数
if index != i and index+1 != i: # 从此开始就是随机⽣成⼀个字符或数字(不知道上⾯代码到底产⽣了⼏(因为随机),也不需要知道,反正结果能出4个字符验证码即可) check_code += chr(random.randint(97, 122)) # 随机⽣成a~z中的⼀个⼩写字母
elif index+1 == i:
check_code += chr(random.randint(65, 90)) # 随机⽣成A~Z中的⼀个⼤写字母
else:
check_code += str(random.randint(1, 9)) # 随机⽣成1~9中的⼀个数字
print("验证码:", check_code) # 输出⽣成的验证码
执⾏结果:
验证码: xufz # 随机不⼀定是这个
以上是⽣成4位随机验证码⽰例代码,需要位数更多改⼀下数字即可。
⽣成⼤乐透号码
原始代码:
"""
输⼊注数⽣成⼤乐透号码
红球取值范围1-36,篮球1-12
"""
import random
class GreatLotto:
"""
需要⼀个⽣成次数count
"""
global result # 声明全局变量
result = []
def __init__(self, count):
self.count = count
def randoms(self):
"""
:return: 返回传⼊次数的随机彩票号码(返回的是⼀个整体列表)
"""
for i in range(self.count):
for j in range(7):
if j <= 4:
index1 = random.randrange(1, 36)
result.append(index1)
if j > 4:
index1 = random.randrange(1, 13)
result.append(index1)
return result # 返回⽣成结果
def start(self):
"""
:return: 根据传⼊的次数判断列表取值的开始数
"""
for l in range(self.count):
if l < 1:
two = l
else:
two = l * 7
yield two # yield是⽣成器,将每次循环⽣成的结果储存(如果使⽤了return会结束循环,导致只能执⾏⼀次)
def ends(self, rer):
"""根据传⼊的次数判断列表取值的结束数"""
for k in range((len(rer) + 1) // 7): # ⼩数不能循环我们⽤地板除
one = (k + 1) * 7
yield one # yield是⽣成器,将每次循环⽣成的结果储存(如果使⽤了return会结束循环,导致只能执⾏⼀次)
if __name__ == '__main__':
num = int(input("请输⼊需要⽣成的注数:"))
Great = GreatLotto(num) # 实例化GreatLotto 并将输⼊的次数传⼊
lists = Great.randoms() # 得到返回的⽣成结果
zips = zip(Great.start(), Great.ends(lists)) # 压缩两个函数使for循环可以同时循环两个对象
for m, n in zips: # 遍历两个函数的⽣成器
print(lists[m:n])
执⾏结果:
请输⼊需要⽣成的注数:3
[6, 15, 9, 34, 9, 8, 8]
[17, 18, 6, 15, 6, 5, 2]
[9, 29, 23, 22, 32, 1, 8]
改进版本:
"""
输⼊注数⽣成⼤乐透号码
红球取值范围1-36,篮球1-12
"""
import random
class GreatLotto:
"""
需要⼀个⽣成次数count
"""
global result # 声明全局变量
result = []
def __init__(self, count):
self.count = count
def randoms(self):
"""
:return: 返回传⼊次数的随机彩票号码(返回的是⼀个整体列表)
"""
for i in range(self.count):
for j in range(7):
if j <= 4:
index1 = random.randrange(1, 36)
result.append(index1)
if j > 4:
index1 = random.randrange(1, 13)
result.append(index1)
return result # 返回⽣成结果
def start_end(self):
"""
:return: 根据传⼊的次数判断列表取值的开始数和结束数
"""
for k in range(self.count):
if k < 1:
start1 = k
else:
start1 = k * 7
end1 = start1 + 7
yield end1, start1 # yield是⽣成器,将每次循环⽣成的结果储存(如果使⽤了return会结束循环,导致只能执⾏⼀次) if __name__ == '__main__':
try:
num = int(input("请输⼊需要⽣成的注数:"))
except ValueError:
print('输⼊的格式错误')
num = int(input("请重新输⼊需要⽣成的注数:"))
Great = GreatLotto(num) # 实例化GreatLotto 并将输⼊的次数传⼊
lists = Great.randoms() # 得到返回的⽣成结果
for end, start in Great.start_end(): # 遍历两个函数的⽣成器
print(lists[start:end]) # 输出最终⽣成的结果
执⾏结果:
请输⼊需要⽣成的注数:3
[32, 27, 30, 2, 28, 10, 11]
[25, 20, 15, 11, 34, 3, 3]
[15, 11, 8, 15, 26, 7, 5]。