好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python实现大乐透号码随机生成

大家好,我是煎蛋哥!

全国有很多彩民,其中购买最多的彩种分别是体彩大乐透和福彩双色球;虽然中大奖的概率极低,但是彩民纷至沓来,一方面抱着一份中奖的希望,另一方面想为公益事业贡献自己的一份薄力

煎蛋哥一直都有购买彩票的习惯,之前路过彩票店都会让店老板机选几注,这样选号自定义没那么方便,而且没法实现连续购买的需求

本篇文章将介绍 Python 实现彩票自由的全流程

1. 随机一注

体彩大乐透一注包含 7 个数字,包含 5 个红球和 2 个篮球

其中

红球是从 1 - 35 中选择 5 个不同的数字 蓝球是从 1 - 12 中选择 2 个不同的数字

使用 Python 随机生成一注号码部分代码如下:

def?gene_dlt(number):
????"""
????随机多注大乐透
????:param?number:
????:return:
????"""
????result?=?[]

????for?index?in?range(number):
????????#?产生5个红球
????????red?=?random.sample([i?for?i?in?range(1,?36)],?5)
????????#?产生2个蓝球
????????blue?=?random.sample([i?for?i?in?range(1,?13)],?2)

????????#?排序
????????red.sort()
????????blue.sort()

????????#?数据处理
????????red?=?nums_pre(red)
????????blue?=?nums_pre(blue)

????????result.append('?'.join(red)?+?"?+?"?+?'?'.join(blue))
????return?'\n'.join(result)

def?nums_pre(nums):
????"""
????购买数字预处理,如果是个位数,加上0
????:param?nums:
????:return:
????"""
????if?nums:
????????if?isinstance(nums,?list)?or?isinstance(nums,tuple):
????????????return?['0{}'.format(int(item))?if?int(item)?<?10?else?str(int(item))?for?item?in?nums]
????????else:
????????????return?'0{}'.format(int(nums))?if?int(nums)?<?10?else?str(int(nums))
????else:
????????return?''

2. 红球固定或蓝球固定

很多彩民认为中奖号码没有规律,因此会选择根据自己的幸运数字,组成一注号码进行固定购买

红球固定

红球固定的情况下,我们只需要随机生成蓝球,然后进行排序、数据预处理,最后组成一注号码即可

def?gene_blue_random_dlt(red,?number):
????"""
????红球固定,篮球随机
????:param?red:红球
????:param?number:随机注数
????:return:
????"""
????result?=?[]

????for?index?in?range(number):
????????#?产生2个蓝球
????????blue?=?random.sample([i?for?i?in?range(1,?13)],?2)

????????#?排序
????????red.sort()
????????blue.sort()

????????#?数据处理
????????red?=?nums_pre(red)
????????blue?=?nums_pre(blue)

????????result.append('?'.join(red)?+?"?+?"?+?'?'.join(blue))
????return?'\n'.join(result)

蓝球固定

蓝球固定时,我们只需要从 1-35 中随机生成 5 个不同的数字即可

def?gene_red_random_dlt(blue,?number):
????"""
????5个红球随机,2个篮球固定
????:param?blue:蓝球列表
????:param?number:随机注数
????:return:
????"""
????result?=?[]

????for?index?in?range(number):
????????#?产生5个红球
????????red?=?random.sample([i?for?i?in?range(1,?36)],?5)

????????#?排序
????????red.sort()
????????blue.sort()

????????#?数据处理
????????red?=?nums_pre(red)
????????blue?=?nums_pre(blue)

????????result.append('?'.join(red)?+?"?+?"?+?'?'.join(blue))
????return?'\n'.join(result)

3. 爬取中奖号码

体彩大乐透开奖时间一般是晚上 9 点到 10 点之间,煎蛋哥建议选择晚上 10 点半进行爬虫,保证爬取数据的稳定准确性

目标地址:

aHR0cHM6Ly9rYWlqaWFuZy41MDAuY29tL3N0YXRpYy9pbmZvL2thaWppYW5nL3htbC9kbHQvbGlzdC54bWw=

该网站通过 XML 数据展示了每一期大乐透的中奖号码,我们只需要使用正则表达式匹配出所有中奖号码,取最近的一期号码即可

import?re
import?requests

class?DLT(object):

????def?__init__(self):
????????#?自行去转码获取(公众号:煎蛋搞钱)
????????self.url?=?'**'
????????self.headers?=?{
????????????'User-Agent':?'Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_11_2)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/71.0.3578.98?Safari/537.36'
????????}

????def?get_last_dlt_lucky(self):
????????#?发起请求
????????reponse?=?requests.get(url=self.url,?headers=self.headers)

????????#?正则规则
????????pattern?=?re测试数据pile(r'<row.*?expect="(.*?)".*?opencode="(.*?)".*?opentime="(.*?)"')

????????#?大乐透数据
????????dlt_raw_list?=?pattern.findall(reponse.text)

????????results?=?[]

????????for?item?in?dlt_raw_list:
????????????#?期数、数据、时间
????????????no,?info,?create_at?=?item
????????????#?5个红球、2个篮球
????????????red,?blue?=?info.split("|")

????????????red_datas?=?red.split(",")
????????????blue_datas?=?blue.split(",")

????????????results.append(
????????????????[no,?red_datas[0],?red_datas[1],?red_datas[2],?red_datas[3],?red_datas[4],?blue_datas[0],?blue_datas[1],
?????????????????create_at]
????????????)

????????#?最近的一期中奖号码
????????last_lottery?=?results[0]

????????return?[last_lottery[1],?last_lottery[2],?last_lottery[3],?last_lottery[4],?last_lottery[5]],????????????????[last_lottery[6],?last_lottery[7]]

4. 是否中奖

有了购买号码、中奖号码,我们查看体彩大乐透官网中奖规则,根据红球中奖个数、蓝球中奖个数返回中奖信息即可

实现代码如下:

...

def?judge_dlt_lucky(red_nums_result,?red_nums_buy,?blue_nums_result,?blue_nums_buy):
????"""
????根据中奖号码及购买号码,返回对应的中奖信息
????:param?red_nums_result:
????:param?red_nums_buy:
????:param?blue_num_result:
????:param?blue_num_buy:
????:return:
????"""
????#?红球预测的数目
????red_lucky_count?=?0
????#?篮球预测的数目
????blue_lucky_count?=?0

????#?数据预处理
????red_nums_buy?=?nums_pre(red_nums_buy)
????blue_nums_buy?=?nums_pre(blue_nums_buy)

????#?判断红球
????for?red_result_item?in?red_nums_result:
????????for?red_buy_item?in?red_nums_buy:
????????????if?red_result_item?==?red_buy_item:
????????????????red_lucky_count?+=?1

????#?判断蓝球
????for?blue_result_item?in?blue_nums_result:
????????for?blue_buy_item?in?blue_nums_buy:
????????????if?blue_result_item?==?blue_buy_item:
????????????????blue_lucky_count?+=?1

????#?大乐透中奖规则
????if?red_lucky_count?==?5?and?blue_lucky_count?==?2:
????????luck_level?=?1??#?一等奖(5+2)
????elif?red_lucky_count?==?5?and?blue_lucky_count?==?1:
????????luck_level?=?2??#?二等奖(5+1)
????elif?red_lucky_count?==?5?and?blue_lucky_count?==?0:
????????luck_level?=?3??#?三等奖(5+0)
????elif?red_lucky_count?==?4?and?blue_lucky_count?==?2:
????????luck_level?=?4??#?四等奖(4+2)
????elif?red_lucky_count?==?4?and?blue_lucky_count?==?1:
????????luck_level?=?5??#?五等奖(4+1)
????elif?red_lucky_count?==?3?and?blue_lucky_count?==?2:
????????luck_level?=?6??#?六等奖(3+2)
????elif?red_lucky_count?==?4?and?blue_lucky_count?==?0:
????????luck_level?=?7??#?七等奖(4+0)
????elif?red_lucky_count?==?3?and?blue_lucky_count?==?1:
????????luck_level?=?8??#?八等奖(3+1)
????elif?red_lucky_count?==?2?and?blue_lucky_count?==?2:
????????luck_level?=?8??#?八等奖(2+2)
????elif?red_lucky_count?==?3?and?blue_lucky_count?==?0:
????????luck_level?=?9??#?九等奖(3+0)
????elif?red_lucky_count?==?2?and?blue_lucky_count?==?1:
????????luck_level?=?9??#?九等奖(2+1)
????elif?red_lucky_count?==?1?and?blue_lucky_count?==?2:
????????luck_level?=?9??#?九等奖(1+2)
????elif?red_lucky_count?==?0?and?blue_lucky_count?==?2:
????????luck_level?=?9??#?九等奖(0+2)
????else:
????????luck_level?=?-1

????return?get_lucky_desc(luck_level),luck_level

5. 总结一下

通过上面的几个步骤,我们实现了选号、爬取中奖号码、判断是否中奖等功能

关于如何将选择的号码发送给站点老板,大家可以通过企业微信、UI 自动化、PC Hook 等方式来完成

以上就是Python实现大乐透号码随机生成的详细内容,更多关于Python大乐透号码的资料请关注其它相关文章!

查看更多关于Python实现大乐透号码随机生成的详细内容...

  阅读:47次