使用序列实现双色球开奖系统,并封装成函数

(规则:
“双色球”每注投注号码由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("输入有误请重新输入:")

#如果有更好的代码方法,欢迎指点交流

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值