一.彩票中奖金额识别脚本编写
def calculate_double_color_ball_prize(user_reds, user_blue, win_reds, win_blue, prize):
'''
:param user_reds: 用户买的红球号
:param user_blue: 用户的篮球号
:param win_reds: 中奖的红球号
:param win_blue: 中奖的篮球号
:param prize: 奖项及奖金
:return:
'''
#红球匹配数量
match_red_number = len(user_reds & win_reds)
#篮球是都匹配
match_blue = user_blue == win_blue
if match_red_number==6 and match_blue:
return prize["一等奖"]
elif match_red_number==6:
return prize["二等奖"]
elif match_red_number==5 and match_blue:
return prize["三等奖"]
elif match_red_number==5 or (match_red_number==4 and match_blue):
return prize['四等奖']
elif match_red_number==4 or (match_red_number==3 and match_blue):
return prize['五等奖']
elif match_red_number==2 and match_blue or (match_red_number==1 and match_blue) or (match_blue):
return prize["六等奖"]
else:
return 0
prize = {
"一等奖": "浮动金额",
"二等奖": "浮动金额",
"三等奖": 3000,
"四等奖": 200,
"五等奖": 10,
"六等奖": 5,
}
user_reds={6,12,16,20,29,31}
user_blue={3}
win_reds={2,6,12,29,30,31}
win_blue={10}
print(calculate_double_color_ball_prize(user_reds, user_blue, win_reds, win_blue,prize))
1.需求:
红球号码(6个号码,范围从1到33)和蓝球号码(1个号码,范围从1到16)全部正确,即中了头奖。红球号码中有6个号码正确,蓝球号码错误,即中二等奖。红球号码中有5个号码正确,蓝球号码正确,即中三等奖。五个红球正确或四个红球一个篮球正确则中四等奖,四个红球正确或者三个红球一个篮球则中五等奖,一个篮球正确或者两个红球一个篮球正确或者一个红球一个篮球正确则种六等奖
2.思路:
所买红篮球和中奖红篮球分开传。红球使用集合,使用并集处理中奖的红球和自己的红球,然后获取并集中的数字数量,蓝球如果相等返回True,不相等返回false,根据需求判断中奖类型,然后从prize字典获取金额
3.所获得知识点
①集合与set
在Python中,set
是一个内置的数据类型,用于创建一个无序的、不包含重复元素的集合。使用set
可以方便地进行集合运算,如交集、并集和差集等。
下面是一些关于set
的基本操作和用法:
-
创建集合:
my_set = set([1, 2, 3]) # 使用列表来创建集合 my_set = {1, 2, 3} # 使用花括号来创建集合
-
添加元素:
my_set.add(4) # 添加元素4到集合中
-
删除元素:
my_set.remove(4) # 从集合中删除元素4
-
集合成员测试:
if 1 in my_set: print("1 在集合中")
-
集合运算:
a = {1, 2, 3} b = {3, 4, 5} union = a | b # 并集:{1, 2, 3, 4, 5} intersection = a & b # 交集:{3} difference = a - b # 差集:{1, 2} symmetric_difference = a ^ b # 对称差集:{1, 2, 4, 5}
-
集合推导式:
a = {x for x in range(4)} # {0, 1, 2, 3}
②判断中的True和False:match_blue = user_blue == win_blue如果自选篮球号码等于中奖篮球为为 True可以执行if下边的语句,如果不相等为false就不执行if语句
③字典在代码中的引用:字典引用,字典的变量名[键]
二.双色球彩票号码生成脚本编写
自己编写脚本
import random
def lottery_generate():
'''
生成彩票号码
:return:
'''
list_red=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]
list_blue=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
list_generate_red=[]
for item in range(6):
red_random_number=random.choice(list_red)
list_generate_red.append(red_random_number)
# print(red_random_number)
list_red.remove(red_random_number)
# print(list_red
list_generate_red.sort()
blue_random_number=random.choice(list_blue)
list_lottery=list_generate_red+[blue_random_number]
return list_lottery
print(lottery_generate())
需求:红球从1-33不放回的获取6个数字。篮球从1-16不放回的获取一个数字。
思路:创建红球和篮球的列表,模拟33个红球和16个篮球
创建list_generate_red获取红球的空列表用于储存获取的红球,然后创建循环使用random.choice从list_red红球列表拿出6个球,存储到空列表中,在拿出红球的同时要使用remove将list_red中已经获取的红球移除这样就不会获取重复数字,获取后进行排序,然后使用random.choice获取一个篮球,然后将红球篮球加到一起
所获知识点:
1.randm模块知识:
在Python中,random
模块提供了一个实用的工具集,用于生成随机数和进行随机选择。这个模块是Python标准库的一部分,因此无需安装即可使用。以下是一些常用的random
模块功能:
-
random.random()
:返回一个[0.0, 1.0)范围内的随机浮点数。 -
random.uniform(a, b)
:返回一个[a, b)范围内的随机浮点数。 -
random.randint(a, b)
:返回一个[a, b]范围内的随机整数。 -
random.randrange(start, stop[, step])
:返回一个[start, stop)范围内,按step递增的随机整数。 -
random.choice(sequence)
:从非空序列中随机选择一个元素。 -
random.sample(population, k)
:从population中随机抽取k个唯一的元素返回一个列表。 -
random.shuffle(x[, random])
:用于将序列x中的元素随机打乱顺序,默认使用random.random()
,也可以传入一个随机函数。 -
random.seed(a=None, version=2)
:初始化随机数生成器,传入的a可以是任意整数或None。当a为None时,会使用系统时间为种子。
使用random
模块时,不需要每次都导入整个模块,可以直接导入需要的功能:
python
复制
from random import randint
# 生成一个1到100之间的随机整数
num = randint(1, 100)
print(num)
如果你想要在代码中生成可复现的随机结果,可以在生成随机数之前设置一个固定的种子:
python
复制
import random
random.seed(42) # 设置种子
print(random.randint(1, 10)) # 生成的随机数将是可预测的
每次运行这段代码时,只要种子保持不变,生成的随机数序列也将保持不变。
2.大预言模型生成的脚本
import random
def generate_double_color_ball():
# 生成6个不重复的红球号码
red_balls = random.sample(range(1, 34), 6)
red_balls.sort() # 对红球号码进行排序
# 生成1个蓝球号码
blue_ball = random.choice(range(1, 17))
return red_balls, blue_ball
# 生成一组双色球号码
red_balls, blue_ball = generate_double_color_ball()
print(f"红球号码:{red_balls}, 蓝球号码:{blue_ball}"