【Python教程】如何制作大乐透号码随机生成详解

零 Python教程评论133字数 4551阅读15分10秒阅读模式

所需工具:

python

聪明的大脑文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

勤劳的双手文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究,禁止商业用途,未经允许禁止转载/分享等文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

介绍

随机一注
红球固定或蓝球固定
红球固定
蓝球固定
爬取中奖号码
是否中奖文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

教程如下

全国有很多彩民,其中购买最多的彩种分别是体彩大乐透和福彩双色球;虽然中大奖的概率极低,但是彩民纷至沓来,一方面抱着一份中奖的希望,另一方面想为公益事业贡献自己的一份薄力文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

煎蛋哥一直都有购买彩票的习惯,之前路过彩票店都会让店老板机选几注,这样选号自定义没那么方便,而且没法实现连续购买的需求文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

本篇文章将介绍 python 实现彩票自由的全流程文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/12130.html

1. 随机一注

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

其中

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

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

[php]

defgene_dlt(number):
"""
随机多注大乐透
:paramnumber:
:return:
"""
result=[]

forindexinrange(number):
#产生5个红球
red=random.sample([iforiinrange(1,36)],5)
#产生2个蓝球
blue=random.sample([iforiinrange(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)

[/php]

需要注意的是,为了方便后面判断是否中奖,这里进行了一次数据预处理,将小于 10 的数字前面加上 0

[php]

defnums_pre(nums):
"""
购买数字预处理,如果是个位数,加上0
:paramnums:
:return:
"""
ifnums:
ifisinstance(nums,list)orisinstance(nums,tuple):
return['0{}'.format(int(item))ifint(item)<10elsestr(int(item))foriteminnums]
else:
return'0{}'.format(int(nums))ifint(nums)<10elsestr(int(nums))
else:
return''

[/php]

2. 红球固定或蓝球固定

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

红球固定

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

[php]

defgene_blue_random_dlt(red,number):
"""
红球固定,篮球随机
:paramred:红球
:paramnumber:随机注数
:return:
"""
result=[]

forindexinrange(number):
#产生2个蓝球
blue=random.sample([iforiinrange(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)

[/php]

蓝球固定

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

[php]

defgene_red_random_dlt(blue,number):
"""
5个红球随机,2个篮球固定
:paramblue:蓝球列表
:paramnumber:随机注数
:return:
"""
result=[]

forindexinrange(number):
#产生5个红球
red=random.sample([iforiinrange(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)

[/php]

3. 爬取中奖号码

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

目标地址:

aHR0cHM6Ly9rYWlqaWFuZy41MDAuY29tL3N0YXRpYy9pbmZvL2thaWppYW5nL3htbC9kbHQvbGlzdC54bWw=

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

[php]

importre
importrequests

classDLT(object):

def__init__(self):
#自行去转码获取(公众号:煎蛋搞钱)
self.url='**'
self.headers={
'User-Agent':'Mozilla/5.0(Macintosh;IntelMacOSX10_11_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/71.0.3578.98Safari/537.36'
}

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

#正则规则
pattern=re.compile(r'<row.* expect="(.* )".* opencode="(.* )".* opentime="(.* )"')

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

results=[]

foritemindlt_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]]

[/php]

4. 是否中奖

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

实现代码如下:

[php]

...

defjudge_dlt_lucky(red_nums_result,red_nums_buy,blue_nums_result,blue_nums_buy):
"""
根据中奖号码及购买号码,返回对应的中奖信息
:paramred_nums_result:
:paramred_nums_buy:
:paramblue_num_result:
:paramblue_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)

#判断红球
forred_result_iteminred_nums_result:
forred_buy_iteminred_nums_buy:
ifred_result_item==red_buy_item:
red_lucky_count+=1

#判断蓝球
forblue_result_iteminblue_nums_result:
forblue_buy_iteminblue_nums_buy:
ifblue_result_item==blue_buy_item:
blue_lucky_count+=1

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

returnget_lucky_desc(luck_level),luck_level

[/php]

5. 总结一下

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

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

零
  • 转载请务必保留本文链接:https://www.0s52.com/bcjc/pythonjc/12130.html
    本社区资源仅供用于学习和交流,请勿用于商业用途
    未经允许不得进行转载/复制/分享

发表评论