(规则: “双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。 红色球号码从1-33中选择;蓝色球号码从1-16中选择。) 需求一,中奖规则 一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖; 二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖; 三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖; 四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球 五等奖,投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝球号码 六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。 需求二,计算中奖金额多少钱? 一等奖:单注奖金固定500万元。 二等奖:单注奖金固定50万元。 三等奖:单注奖金固定为3000元。 四等奖:单注奖金固定为200元。 五等奖:单注奖金固定为10元。 六等奖:单注奖金固定为5元。 需求三,需要自己购买双色球的号数,以及购买彩票的注数,每注两元钱 需求四,打印出自己买彩票花了多少钱
def gen_pc_boll():
"""
电脑随机生成6个红球和1个蓝球
:return:pc_red,pc_blue
"""
# 循环生成红球随机数,当不在列表就添加,否则开始下一次循环,直到生成6个不重复的红球
pc_red = set(random.sample(range(1, 34), 6))
# 电脑生成蓝球
pc_blue = random.randint(1, 16)
print(pc_blue)
print(pc_red)
return pc_red,pc_blue
def gen_user_boll():
"""
生成用户购买的双色球
:retur:nu_red,u_blue,much:
"""
u_red=set()
# 用户购买红球
while True:
num = int(input(f"请输入你要购买的第{len(u_red) + 1}个红球(1-33):"))
if num not in u_red and 1<=num<=33:
u_red.add(num)
# 对用户购买的红球数量进行判断,当数量足够6个时退出循环
if len(u_red) == 6:
break
# 用户购买的蓝球
u_blue = int(input("请输入要购买的蓝球号码(1-16):"))
# 用户输入购买的注数
much = int(input("请输入要购买的注数:"))
print(f"购买了{much}注,共花费{much * 2}元")
return u_red,u_blue,much
def comper_boll(pc_red,pc_blue,u_red,u_blue):
"""
对比电脑和用户双色球相同的个数
:param pc_red:电脑的红球
:param pc_blue:电脑的蓝球
:param u_red:用户的红球
:param u_blue:用户的蓝球
:return :r_boll,b_boll
"""
# 计算中了多少个红球
r_boll = len(pc_red & u_red)
# 判断蓝球号码是否一致
b_boll = 1 if pc_blue == u_blue else 0
return r_boll,b_boll
def print_bonus(r_boll,b_boll,much):
"""
判断中几等奖,并打印奖金
:param r_boll: 红球相等个数
:param b_boll:蓝球是否相等
:param much:购买注数
:return:None
"""
# 判断中了几等奖?
if r_boll == 6 and b_boll:
print(f"中一等奖,奖金{much * 500}万元")
elif r_boll == 6:
print(f"中二等奖,奖金{much * 50}万元")
elif r_boll == 5 and b_boll:
print(f"中三等奖,奖金{much * 3000}元")
elif r_boll == 5 or (r_boll == 4 and b_boll):
print(f"中四等奖,奖金{much * 200}元")
elif r_boll == 4 or (r_boll == 3 and b_boll):
print(f"中五等奖,奖金{much * 10}元")
elif b_boll == 1:
print(f"中六等奖,奖金{much * 5}元")
else:
print("很遗憾没中奖,下次继续")
wel_page = """
-------------------------------
欢迎进入双色球系统
请选择要完成的操作:
1.电脑生成双色球
2.用户购买双色球
3.对比中奖情况
0.退出程序
-------------------------------
"""
import random
# 让程序循环起来
while True:
# 打印欢迎界面
print(wel_page)
# 用户选择要进行的操作
c_choice = input("请输入要进行的操作:")
# 判断用户的操作
# 电脑生成6个红球和1个蓝球(6个红球不重复,红球取值范围在1-33之间;蓝球范围在1-16)
if c_choice == "1":
# 调用生成电脑双色球的函数
pc_red,pc_blue=gen_pc_boll()
# 用户输入6个红球和1个蓝球(6个红球不重复,红球取值范围在1-33之间;蓝球范围在1-16)
elif c_choice == "2":
#调用用户生成双色球的函数
u_red,u_blue,much=gen_user_boll()
# 对比中奖情况
elif c_choice == "3":
# 判断用户和电脑是否已经生成双色球
if len(pc_red) == 0 and len(u_red) == 0:
print("电脑或用户未生成,请先完成购买或电脑生成双色球")
continue
#调用对比相同双色球的个数
r_boll, b_boll= comper_boll(pc_red,pc_blue,u_red,u_blue)
#判断中几等奖,并打印
print_bonus(r_boll,b_boll,much)
# 数据还原
pc_red = set()
u_red =set()
pc_blue = 0
u_blue = 0
# 退出程序
elif c_choice == "0":
break
else:
print("输入有误请重新输入:")
#如果有更好的代码方法,欢迎指点交流