Python生成随机验证码,大乐透号码
实例笔记之生成随机号码
扩展知识 - yield(生成器)
随机生成验证码
示例代码:
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]
Python生成随机验证码,大乐透号码的更多相关文章
- 08 python学习笔记-随机生成大乐透号码(八)
1 #产生大乐透号码 2 #前区 1-32,5 后区 1-12,2 3 #1.前区从1-32中级取5个,后区再从1-12里面取2个 4 #01 02 03 04 5 def dlt(): #生成随机大 ...
- python 写一个生成大乐透号码的程序
""" 写一个生成大乐透号码的程序 生成随机号码:大乐透分前区号码和后区号码, 前区号码是从01-35中无重复地取5个号码, 后区号码是从01-12中无重复地取2个号码, ...
- Python 生成随机验证码
Python生成随机验证码 Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...
- Python生成随机验证码
Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...
- Python实现双色球和大乐透摇奖
实现代码: # code by kadycui # 模块引用 import random def select(): print('\n') print('请选择彩票种类') print('双色球输入 ...
- Python - 生成随机验证码的3种实现方式
生成6位随机验证码的3种实现方式如下: 1. 简单粗暴型:所有数字和字母都放入字符串: 2. 利用ascii编码的规律,遍历获取字符串和数字的字符串格式: 3. 引用string库. 方法1代码: i ...
- python模拟双色球大乐透生成算法
每天练习一段python代码,健康生活一辈子.晚上下班没事,打开电脑继续编写python代码!今天分享的一个是大家熟悉的双色球彩票的游戏,根据这个进行写的一个python算法,代码精简,肯定有bug, ...
- python—模拟生成双色球号和大乐透号
下边这个脚本,比较适合初级学习基本python语法用.但是,不精炼建议可参考https://www.cnblogs.com/Formulate0303/p/14031748.html的写法. 大乐透玩 ...
- python 获取大乐透中奖结果
实现思路: 1.通过urllib库爬取http://zx.500.com/dlt/页面,并过滤出信息 2.将自己的买的彩票的号与开奖号进行匹配,查询是否中奖 3.将中奖结果发生到自己邮箱 caipia ...
随机推荐
- mysql 原理 ~ kill session解析
一 简介:kill session为什么需要很久 二 kill语句分为三类 1 DML语句 2 select语句 3 DDL语句 三 kill都要做什么操作 1 kill对sessio ...
- GAN_李弘毅讲解
GAN_李弘毅讲解: 上式中,xi从data中sample的一部分,现在的目的就是最大化这个似然函数,使得Generator最可能产生data中的这些sample: 上式中之所以如此设计V函数,是为了 ...
- ethtool 解决网卡丢包严重和网卡原理【转】
转自:https://blog.csdn.net/u011857683/article/details/83758869 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- 旷视科技 -- Face++ 世界最大的人脸识别技术平台
旷视科技 -- Face++ 世界最大的人脸识别技术平台: https://www.megvii.com/
- 题解-BOI 2004 Sequence
Problem bzoj & Luogu 题目大意: 给定序列\(\{a_i\}\),求一个严格递增序列\(\{b_i\}\),使得\(\sum \bigl |a_i-b_i\bigr|\)最 ...
- C++怎么实现线程安全
muduo库学习笔记1-C++多线程系统编程 网上都说这本书很适合初学者入门学习, 我今天开始准备从头再来; 第一章线程安全的对象管理 对象的生与死不能由对象自身拥有的mutex(互斥器)来保护; 如 ...
- CSRFGuard工具介绍
理解CSRFGuard的基础:http://www.runoob.com/jsp/jsp-tutorial.html 1:您需要做的第一件事是将OWASP.CSRFARGAD.JAR库复制到类路径中. ...
- ranlib 作用
ar 命令用于更新,维护管理静态库. ranlib 命令用于 更新库的符号索引表. 当只执行了ar命令(用于更新)时, ld连接时会仍然报错,查找不到更新的变量或函数,此时需要用ranlib来更新库的 ...
- fiddler 抓取 安卓模拟器 https包
2017-12-12 16:47:45 星期二 需要材料: 1. fiddler 2. 逍遥模拟器 步骤: 1. fiddler->tool->Optiions...->connec ...
- T-SQL ORDER BY子句 排序方式
MS SQL Server ORDER BY子句用于根据一个或多个列以升序或降序对数据进行排序. 默认情况下,一些数据库排序查询结果按升序排列. 语法 以下是ORDER BY子句的基本语法. SELE ...