历史中奖数据
网页:https://www.lottery.gov.cn/kj/kjlb.html?dlt
计算中奖程序
'''
# 名称:大乐透中奖计算
# 作者:liteng
# 红球:1-35,选择5个
# 蓝球:1-12,选择2个
'''
import json
# 获取开奖信息
def getList():
file = open('./sample01/data/lottery/grand-lotto.json', encoding='utf-8')
data = file.read()
result = json.loads(data)['value']['list']
file.close()
list = []
for item in result:
parts = item['lotteryDrawResult'].split(' ')
balls = []
for ball in parts:
balls.append(int(ball, 10))
list.append({
'time': item['lotteryDrawTime'],
'balls': balls
})
return list
# 计算当前号码几等奖
def getPrize(current, expect):
redEqual = 0
blueEqual = 0
for i in range(7):
for j in range(7):
if current[i] != expect[j]:
continue
if i < 5 and j < 5:
redEqual += 1
if i >= 5 and j >= 5:
blueEqual += 1
totalEqual = redEqual + blueEqual
if totalEqual == 7:
return 1
elif redEqual == 5 and blueEqual == 1:
return 2
elif redEqual == 5:
return 3
elif redEqual == 4 and blueEqual == 2:
return 4
elif redEqual == 4 and blueEqual == 1:
return 5
elif redEqual == 3 and blueEqual == 2:
return 6
elif redEqual == 4:
return 7
elif redEqual == 3 and blueEqual == 1 or redEqual == 2 and blueEqual == 2:
return 8
elif redEqual == 3 or redEqual == 1 and blueEqual == 2 or redEqual == 2 and blueEqual == 1:
return 9
return 10
def getMoney(prize):
if prize == 1:
return 10000000
elif prize == 2:
return 5000000
elif prize == 3:
return 10000
elif prize == 4:
return 3000
elif prize == 5:
return 300
elif prize == 6:
return 200
elif prize == 7:
return 100
elif prize == 8:
return 15
elif prize == 9:
return 5
return 0
def main():
list = getList()
balls = [
# 2023-01-02
[6, 15, 17, 27, 31, 1, 9],
[5, 12, 27, 30, 34, 4, 8],
[9, 12, 14, 25, 30, 10, 11],
[8, 10, 14, 30, 32, 11, 12],
[2, 8, 11, 29, 32, 3, 5],
# 2023-7-19
[7, 16, 26, 30, 34, 5, 8],
[2, 4, 5, 31, 35, 11, 12],
[6, 10, 24, 33, 35, 2, 11],
[8, 10, 21, 26, 29, 1, 9],
[3, 5, 15, 24, 34, 9, 11]
]
for i in range(len(balls)):
ball = balls[i]
prize = 10
time = None
expect = None
for item in list:
prize1 = getPrize(ball, item['balls'])
if prize1 < prize:
prize = prize1
time = item['time']
expect = item['balls']
if time != None:
current = ' '.join([str(item) for item in ball])
expect = ' '.join([str(item) for item in expect])
money = getMoney(prize)
print(
f'恭喜你,第{i+1}注彩票在{time}中了{prize}等奖,获得{money}元\t开奖:[{expect}] 实际:[{current}]')
else:
print(f'很遗憾,第{i+1}注彩票未中奖')
main()
输出结果
恭喜你,第1注彩票在2019-10-21中了6等奖,获得200元 开奖:[6 15 17 22 25 1 9] 实际:[6 15 17 27 31 1 9]
恭喜你,第2注彩票在2020-10-05中了7等奖,获得100元 开奖:[5 25 27 30 34 6 12] 实际:[5 12 27 30 34 4 8]
恭喜你,第3注彩票在2015-08-26中了5等奖,获得300元 开奖:[9 12 14 22 25 5 10] 实际:[9 12 14 25 30 10 11]
恭喜你,第4注彩票在2012-02-08中了5等奖,获得300元 开奖:[10 14 24 30 32 1 12] 实际:[8 10 14 30 32 11 12]
恭喜你,第5注彩票在2017-12-02中了6等奖,获得200元 开奖:[2 8 21 22 29 3 5] 实际:[2 8 11 29 32 3 5]
恭喜你,第6注彩票在2012-03-21中了7等奖,获得100元 开奖:[7 8 16 26 34 7 11] 实际:[7 16 26 30 34 5 8]
恭喜你,第7注彩票在2018-11-14中了5等奖,获得300元 开奖:[4 5 19 31 35 2 12] 实际:[2 4 5 31 35 11 12]
恭喜你,第8注彩票在2020-01-11中了7等奖,获得100元 开奖:[6 10 33 34 35 1 3] 实际:[6 10 24 33 35 2 11]
恭喜你,第9注彩票在2021-08-21中了8等奖,获得15元 开奖:[7 8 10 20 21 1 5] 实际:[8 10 21 26 29 1 9]
恭喜你,第10注彩票在2016-04-02中了7等奖,获得100元 开奖:[3 5 13 24 34 3 5] 实际:[3 5 15 24 34 9 11]
模拟中奖程序
'''
# 名称:大乐透模拟中奖
# 作者:liteng
# 红球:1-35,选择5个
# 蓝球:1-12,选择2个
'''
import json
import random
# 获取开奖信息
def getList():
file = open('./sample01/data/lottery/grand-lotto.json', encoding='utf-8')
data = file.read()
result = json.loads(data)['value']['list']
file.close()
list = []
for item in result:
parts = item['lotteryDrawResult'].split(' ')
balls = []
for ball in parts:
balls.append(int(ball, 10))
list.append({
'time': item['lotteryDrawTime'],
'balls': balls
})
return list
# 计算当前号码几等奖
def getPrize(current, expect):
redEqual = 0
blueEqual = 0
for i in range(7):
for j in range(7):
if current[i] != expect[j]:
continue
if i < 5 and j < 5:
redEqual += 1
if i >= 5 and j >= 5:
blueEqual += 1
totalEqual = redEqual + blueEqual
if totalEqual == 7:
return 1
elif redEqual == 5 and blueEqual == 1:
return 2
elif redEqual == 5:
return 3
elif redEqual == 4 and blueEqual == 2:
return 4
elif redEqual == 4 and blueEqual == 1:
return 5
elif redEqual == 3 and blueEqual == 2:
return 6
elif redEqual == 4:
return 7
elif redEqual == 3 and blueEqual == 1 or redEqual == 2 and blueEqual == 2:
return 8
elif redEqual == 3 or redEqual == 1 and blueEqual == 2 or redEqual == 2 and blueEqual == 1:
return 9
return 10
def getMoney(prize):
if prize == 1:
return 10000000
elif prize == 2:
return 5000000
elif prize == 3:
return 10000
elif prize == 4:
return 3000
elif prize == 5:
return 300
elif prize == 6:
return 200
elif prize == 7:
return 100
elif prize == 8:
return 15
elif prize == 9:
return 5
return 0
def main():
list = getList()
balls = [
# # 2023-01-02
# [6, 15, 17, 27, 31, 1, 9],
# [5, 12, 27, 30, 34, 4, 8],
# [9, 12, 14, 25, 30, 10, 11],
# [8, 10, 14, 30, 32, 11, 12],
# [2, 8, 11, 29, 32, 3, 5],
# # 2023-7-19
# [7, 16, 26, 30, 34, 5, 8],
# [2, 4, 5, 31, 35, 11, 12],
# [6, 10, 24, 33, 35, 2, 11],
# [8, 10, 21, 26, 29, 1, 9],
# [3, 5, 15, 24, 34, 9, 11]
]
for i in range(10):
red = []
blue = []
while True:
num = random.randint(1, 35)
if red.count(num) == 0:
red.append(num)
if len(red) == 5:
break
while True:
num = random.randint(1, 12)
if blue.count(num) == 0:
blue.append(num)
if len(blue) == 2:
break
red.sort()
blue.sort()
ball = []
for i in red:
ball.append(i)
for i in blue:
ball.append(i)
balls.append(ball)
for i in range(len(balls)):
ball = balls[i]
prize = 10
time = None
expect = None
for item in list:
prize1 = getPrize(ball, item['balls'])
if prize1 < prize:
prize = prize1
time = item['time']
expect = item['balls']
if time != None:
current = ' '.join([str(item) for item in ball])
expect = ' '.join([str(item) for item in expect])
money = getMoney(prize)
print(
f'恭喜你,第{i+1}注彩票在{time}中了{prize}等奖,获得{money}元\t开奖:[{expect}] 实际:[{current}]')
else:
print(f'很遗憾,第{i+1}注彩票未中奖')
main()
输出结果
恭喜你,第1注彩票在2022-05-04中了8等奖,获得15元 开奖:[6 10 20 28 35 1 10] 实际:[6 14 26 28 34 1 10]
恭喜你,第2注彩票在2021-10-25中了8等奖,获得15元 开奖:[14 15 26 27 29 4 5] 实际:[12 20 27 28 29 4 5]
恭喜你,第3注彩票在2012-06-16中了7等奖,获得100元 开奖:[2 4 22 25 34 2 11] 实际:[4 11 22 25 34 3 4]
恭喜你,第4注彩票在2013-01-07中了6等奖,获得200元 开奖:[1 16 18 21 31 9 12] 实际:[1 2 16 19 21 9 12]
恭喜你,第5注彩票在2011-04-09中了5等奖,获得300元 开奖:[3 7 15 18 20 1 6] 实际:[3 7 15 18 33 1 8]
恭喜你,第6注彩票在2013-06-17中了6等奖,获得200元 开奖:[6 12 13 16 30 7 12] 实际:[6 9 13 16 17 7 12]
恭喜你,第7注彩票在2013-07-17中了5等奖,获得300元 开奖:[3 9 25 26 33 3 12] 实际:[3 4 9 26 33 2 3]
恭喜你,第8注彩票在2023-06-26中了8等奖,获得15元 开奖:[5 6 9 11 14 2 4] 实际:[2 6 9 11 24 2 6]
恭喜你,第9注彩票在2016-12-03中了5等奖,获得300元 开奖:[1 6 17 23 26 6 12] 实际:[1 6 17 23 30 7 12]
恭喜你,第10注彩票在2013-10-21中了7等奖,获得100元 开奖:[2 9 10 33 34 5 12] 实际:[2 9 10 27 34 3 7]