双色球 | python

news/2024/7/23 17:09:08 标签: python, 网络, 开发语言

1. 玩法规则

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

 

 

2. 需求

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

  2. 两种产生数据方式

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

      2.2 自动生成

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

 3. 代码实现

python">"""
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. 运行结果

自选:

机选:


http://www.niftyadmin.cn/n/5546641.html

相关文章

tcp并发设计

4注意&#xff1a;原始代码&#xff0c;如果先关闭服务器端&#xff0c;再次开启服务器的时候会报"connect: Connection refused "错误&#xff0c;这是因为先关服务器端&#xff0c;导致系统认为客户端仍然在与服务器端连接造成。 可以使用setsockopt setsockopt函…

移除元素的讲解,看这篇就够了!

一&#xff1a;题目 博主本文将用指向来形象的表示下标位的移动。 二&#xff1a;思路 1&#xff1a;两个整形&#xff0c;一个start&#xff0c;一个end&#xff0c;在一开始都 0&#xff0c;即这里都指向第一个元素。 2&#xff1a;在查到val之前&#xff0c;查一个&…

Apache AGE 安装部署

AGE概述 概述 我们可以通过源码安装、拉取docker镜像运行、直接使用公有云三种方式中的任意一种来使用Apache AGE 获取 AGE 发布版本 可以在 https://github.com/apache/age/releases 找到发布版本和发布说明。 源代码 源代码可以在 https://github.com/apache/age 找到…

【面向就业的Linux的基础】从入门到熟练,探索Linux的秘密(十三)-常用的命令

上述是一些系统命令的基本练习&#xff0c;可以当做日常笔记学习收藏一下&#xff01;&#xff01;&#xff01; 目录 前言 一、文件权限 二、文件检索 三、查看文件内容 四、用户相关 五、工具 六、安装软件 七、作业​​​​​​​ 总结 前言 上述是一些系统命令的…

☺初识c++(语法篇)☺

目录 一命名空间&#xff08;namespace&#xff09;&#xff1a; 二cout与cin简述&#xff1a; 三缺省参数&#xff1a; 四函数重载&#xff1a; 五引用&#xff1a; 六内联函数: 七c中的nullptr简述&#xff1a; 一命名空间&#xff08;namespace&#xff09;&#xff1…

面向对象——继承、封装、多态

什么是面向对象&#xff1f; 面向对象&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来设计应用程序和计算机程序。OOP的核心概念包括类&#xff08;Class&#xff09;、对象&#xff08;Object&#xff09…

动态模型管理:Mojo模型的自定义保存与加载控制

动态模型管理&#xff1a;Mojo模型的自定义保存与加载控制 在机器学习模型的生命周期中&#xff0c;模型的保存与加载是一个至关重要的环节。Mojo模型&#xff0c;作为H2O.ai提供的一种模型部署格式&#xff0c;主要用于模型的序列化和预测。Mojo模型支持将训练好的模型转换为…

FastAPI本身是一个高性能的Web框架

FastAPI本身是一个高性能的Web框架&#xff0c;它并不直接支持数据库操作&#xff0c;但可以通过集成各种数据库库来与各种数据库进行交互。FastAPI支持几乎所有的关系型数据库和非关系型数据库&#xff0c;这主要取决于你选择的数据库库&#xff08;如ORM库&#xff09;以及相…