实例笔记之生成随机号码

扩展知识 - 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生成随机验证码,大乐透号码的更多相关文章

  1. 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(): #生成随机大 ...

  2. python 写一个生成大乐透号码的程序

    """ 写一个生成大乐透号码的程序 生成随机号码:大乐透分前区号码和后区号码, 前区号码是从01-35中无重复地取5个号码, 后区号码是从01-12中无重复地取2个号码, ...

  3. Python 生成随机验证码

    Python生成随机验证码  Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...

  4. Python生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...

  5. Python实现双色球和大乐透摇奖

    实现代码: # code by kadycui # 模块引用 import random def select(): print('\n') print('请选择彩票种类') print('双色球输入 ...

  6. Python - 生成随机验证码的3种实现方式

    生成6位随机验证码的3种实现方式如下: 1. 简单粗暴型:所有数字和字母都放入字符串: 2. 利用ascii编码的规律,遍历获取字符串和数字的字符串格式: 3. 引用string库. 方法1代码: i ...

  7. python模拟双色球大乐透生成算法

    每天练习一段python代码,健康生活一辈子.晚上下班没事,打开电脑继续编写python代码!今天分享的一个是大家熟悉的双色球彩票的游戏,根据这个进行写的一个python算法,代码精简,肯定有bug, ...

  8. python—模拟生成双色球号和大乐透号

    下边这个脚本,比较适合初级学习基本python语法用.但是,不精炼建议可参考https://www.cnblogs.com/Formulate0303/p/14031748.html的写法. 大乐透玩 ...

  9. python 获取大乐透中奖结果

    实现思路: 1.通过urllib库爬取http://zx.500.com/dlt/页面,并过滤出信息 2.将自己的买的彩票的号与开奖号进行匹配,查询是否中奖 3.将中奖结果发生到自己邮箱 caipia ...

随机推荐

  1. Nginx系列2:用Nginx搭建一个可用的静态资源Web服务器

    上一节中编译好自己的nginx服务器后, 现在要对nginx.conf文件进行配置,搭建一个可用的静态资源Web服务器 1.放入可访问的html文件到nginx文件夹下,如图1所示: 这里我放入的是一 ...

  2. tomcat quartz 被触发两次

    主要原因为tomcat server.xml 配置问题 <Host appBase="webapps" autoDeploy="true" name=&q ...

  3. 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...

  4. python3-元类

    原文出处:http://www.cnblogs.com/linhaifeng/articles/8029564.html exec的使用 #可以把exec命令的执行当成是一个函数的执行,会将执行期间产 ...

  5. k64 datasheet学习笔记4---Clock distribution

    1.前言 本文主要讲述K64时钟配置相关的内容. 2.clock overview 2.1 clock diagram 2.2 对clock diagram的信号说明 (1)MCG决定哪个clock ...

  6. dubbo源码分析5——SPI机制_AdaptiveExtension的原理和作用

    private T createAdaptiveExtension() { try { return injectExtension((T) getAdaptiveExtensionClass().n ...

  7. 虚拟化之kvm --(vnc控制台)

    作者:邓聪聪 随着日益不同的需求增多,为了满足主机供求,get到这一招虚拟化技术,以增加点见识! 1.使用yum安装: yum -y install qemu-kvm libvirt python-v ...

  8. python3+selenium框架设计07-unittest单元测试框架

    可以自行百度学习下单元测试框架,或者看Python3学习笔记26-unittest模块 在项目下新建一个entrance.py文件.并使用之前的测试用例进行演示.目前项目结构. ​ 在entrance ...

  9. C++面向对象的特点

    C++面向对象的特点 面向对象的特点主要有: 封装, 继承, 多态; 现在自己的简单理解如下, 但要明白具体怎么实现, 背后的原理是什么? 什么是封装, C++怎么实现封装 封装的大致可以分为: 函数 ...

  10. ActiveMQ-为什么需要消息中间件?

    消息中间件的优势 UNIX的进程间通信就开始运用消息队列技术,一个进程将数据写入某个特定的队列中,其它进程可以读取队列中的数据,从而实现异步通信.对于如今的分布式系统,消息队列已经演变为独立的消息中间 ...