双色球 | python

1. 玩法规则

“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1—33 中选择,蓝色球号码从 1—16 中选择。 球的数字匹配数量和颜色决定了是否中奖。

 

 

2. 需求

  1. 生成本期双色球中奖号码。(注意:1.生成的红球随机有序且不可重复、2.蓝球和红球的随机范围不同且蓝球允许和红球重复)

  2. 两种产生数据方式

      2.1 通过控制台输入竞猜号码

      2.2 自动生成

    3.记录红球、蓝球竞猜正确球的数量,并根据获奖条件输出竞猜结果和本期双色球号码

 3. 代码实现

"""
1、打印欢迎界面
2、让用户选择 (选的不对一直选  死循环)
3、根据用户选择 是机选还是手选
   两个方法:机选方法
            手选方法
   机器通过机选方法生成一个中奖号码
4、根据中奖号码和用户的号码进行比对  --方法
5、根据情况,获得奖项
6、打印用户的抽奖情况
"""


# 此方法用于获取用户自选的双色球,返回值是set集合
def getCustomBalls():
    while True:
        print("开始输入红球的值:")
        str01 = input("请输入6个1~33的数字(使用空格隔开):")
        list01 = str01.split()  # []
        list01 = [int(x) for x in list01]
        set01 = set(list01)  # {'3', '2', '1', '4', '6', '5'}
        if len(set01) < 6:
            print("您输入的数字不够,或者有重复,请重新输入")
            continue
        print(set01)
        list01 = [x for x in set01 if 1 <= int(x) <= 33]
        if len(list01) < 6:
            print("有超过范围的数字,请重新输入")
            continue
        while True:
            print("开始输入蓝球的数字:")
            num = int(input("请输入1个1~16的数字:"))
            if 1 <= num <= 16:
                list01.append(num)
                break
            else:
                print("篮球的数值不对,请重新输入")
                continue
        return list01


# 此方法用于随机获取一组双色球,返回值是set集合
import random


def getRandomBalls():
    list01 = list()
    while len(list01) < 6:
        num = random.randint(1, 33)
        if num not in list01:
            list01.append(num)
    lanNum = random.randint(1, 16)
    list01.append(lanNum)
    return list01


def chouJiang(user_balls, jiang_balls):
    """
    红色和蓝色分来[切片],求红球之间的交集,在求长度
    """
    user_hong = user_balls[:6]
    jiang_hong = jiang_balls[:6]
    print(user_hong, jiang_hong)
    print(type(user_hong))  # <class 'list'>
    s1 = set(user_hong)  # 将list 转换为 set
    s2 = set(jiang_hong)
    print(s1 & s2)
    s3 = s1 & s2
    user_lan = user_balls[-1]
    jiang_lan = jiang_balls[-1]
    num_lan = 0
    num_hong = len(s3)
    if user_lan == jiang_lan:
        num_lan = 1
    jiang_level = 0
    if num_hong == 6 and num_lan == 1:
        jiang_level = 1
    if num_hong == 6 and num_lan == 0:
        jiang_level = 2
    if num_hong == 5 and num_lan == 1:
        jiang_level = 3
    if (num_hong == 4 and num_lan == 1) or (num_hong == 5 and num_lan == 0):
        jiang_level = 4
    if (num_hong == 4 and num_lan == 0) or (num_hong == 3 and num_lan == 1):
        jiang_level = 5
    if (num_hong == 2 and num_lan == 1) or (num_hong == 1 and num_lan == 1) or (num_hong == 0 and num_lan == 1):
        jiang_level = 6
    return jiang_level


def getJiangName(jiangLevel):
    match jiangLevel:
        case 0:
            return "没中奖", 0
        case 1:
            return "一等奖", 5000000
        case 2:
            return "二等奖", 100000
        case 3:
            return "三等奖", 3000
        case 4:
            return "四等奖", 200
        case 5:
            return "五等奖", 10
        case 6:
            return "六等奖", 5


def showMainScreen():
    print("*" * 30, end = " ")
    print("欢迎来到大数据双色球系统", end="")
    print("*" * 30)
    user_balls = set()
    while True:
        choiceNum = int(input("请输入您的选择:1 自选 2机选 0退出系统:"))
        if choiceNum in (0, 1, 2):
            break
        else:
            print("您的输入有无,请重新输入!")
    match choiceNum:
        case 0:
            exit(0)
        case 1:
            # 自选
            user_balls = getCustomBalls()
        case 2:
            # 机选
            user_balls = getRandomBalls()
    print("用户获得的彩排是:")
    print(user_balls)
    # 中奖号码,随机获取的
    random_balls = getRandomBalls()
    # 这个方法是比对用户的彩票和中奖彩排之间的关系
    jiangLevel = chouJiang(user_balls, random_balls)
    jiangName, jiangMoney = getJiangName(jiangLevel)
    print(f"您的选择是:{user_balls}")
    print(f"中奖号码是:{random_balls}")
    if jiangLevel == 0:
        print("很遗憾,本次没有中奖,希望下次中奖!")
    else:
        print("恭喜您,中了%s,中奖金额高达%d元" % (jiangName, jiangMoney))


showMainScreen()

4. 运行结果

自选:

机选:

相关推荐

  1. 使用Python进行选号

    2024-07-09 21:56:05       17 阅读
  2. 案例【C#】

    2024-07-09 21:56:05       14 阅读
  3. 用c语言写一个机选系统

    2024-07-09 21:56:05       40 阅读
  4. python实现大作战

    2024-07-09 21:56:05       25 阅读

最近更新

  1. 第 8 章 虚拟文件系统(3)

    2024-07-09 21:56:05       0 阅读
  2. linux yum,rpm,dkpg,apt区别

    2024-07-09 21:56:05       0 阅读
  3. 【C++】C++中find_first_of函数解析

    2024-07-09 21:56:05       0 阅读
  4. PHP MySQL 读取数据

    2024-07-09 21:56:05       0 阅读

热门阅读

  1. Kafka 典型问题与排查以及相关优化

    2024-07-09 21:56:05       5 阅读
  2. SQL中字符串类型中char和varchar之间的区别是什么

    2024-07-09 21:56:05       5 阅读
  3. 【框架】ABP(ASP.NET Boilerplate Project)

    2024-07-09 21:56:05       6 阅读
  4. SQL Server集成服务(SSIS):数据集成的瑞士军刀

    2024-07-09 21:56:05       6 阅读
  5. LVS+Keepalived群集

    2024-07-09 21:56:05       4 阅读
  6. 精准控制:Eureka服务续约间隔配置全指南

    2024-07-09 21:56:05       8 阅读
  7. 部署LVS-DR群集

    2024-07-09 21:56:05       8 阅读