双色球 | 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. 运行结果

自选:

机选:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/787586.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

光学传感器图像处理流程(一)

光学传感器图像处理流程&#xff08;一&#xff09; 1. 处理流程总览2. 详细处理流程2.1. 图像预处理2.1.1. 降噪处理2.1.2. 薄云处理2.1.3. 阴影处理 2.2. 辐射校正2.2.1. 辐射定标2.2.2. 大气校正2.2.3. 地形校正 2.3. 几何校正2.3.1. 图像配准2.3.2. 几何粗校正2.3.3. 几何精…

Python神经模型评估微分方程图算法

&#x1f3af;要点 &#x1f3af;神经网络映射关联图 | &#x1f3af;执行时间分析 | &#x1f3af;神经网络结构降维 | &#x1f3af;量化图结构边作用 | &#x1f3af;数学评估算法实现 &#x1f36a;语言内容分比 &#x1f347;Python随机梯度下降算法 随机梯度下降是梯度…

【Python实战因果推断】18_线性回归的不合理效果8

目录 Saturated Regression Model Regression as Variance Weighted Average Saturated Regression Model 还记得我在本章开头强调回归和条件平均值之间的相似性吗&#xff1f;我向你展示了使用二元干预进行回归与比较干预组和对照组的平均值是完全一样的。现在&#xff0c;由…

逆向分析之电脑端如何调试一些只能手机端浏览器才可以打开的网站

手机端浏览器的指纹和电脑端浏览器的指纹是不同的,这样只在手机端浏览器运行的网站则可以检测网站是否满足手机端浏览器指纹的要求,不满足则可以进行一些反爬措施。 例如一些公众号,其实就是使用手机端浏览器打开的H5网站,就可以进行手机端浏览器指纹检测。 这里只是讲解下…

昇思MindSpore学习总结十二 —— ShuffleNet图像分类

当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 1、ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达…

STM32基础篇:AFIO × 查表重映射 × AFIO库函数

AFIO简介 AFIO&#xff0c;直译为&#xff1a;复用输入输出&#xff0c;是STM32上众多的片上外设之一&#xff1b;我们知道当IO引脚复用功能冲突时&#xff0c;可以通过重映射来解决这个问题&#xff0c;而AFIO就是专门用来执行"复用功能的重映射"的模块&#xff08…

Mac电脑上有什么好玩的肉鸽游戏推荐 苹果电脑怎么玩以撒的结合

Mac电脑尽管在游戏兼容性上可能不及Windows。但是&#xff0c;对于喜欢在Mac上游玩的玩家来说&#xff0c;依然有不少优秀的游戏可以选择&#xff0c;尤其是那些富有挑战性和策略性的肉鸽游戏。此外&#xff0c;对于经典游戏《以撒的结合》&#xff0c;Mac平台也提供了良好的游…

模拟考试小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;科目管理&#xff0c;复习资料管理&#xff0c;参考文献管理&#xff0c;用户管理&#xff0c;留言板管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;复习资料&#xf…

2017年,我成为了技术博主

2017年9月&#xff0c;我已经大三了。 >>上一篇&#xff08;爪哇&#xff0c;我初窥门径&#xff09; 我大二学了很多java技术&#xff0c;看似我一会就把javaweb/ssh/ssm这些技术栈给学了。 这些技术确实不难&#xff0c;即便是我&#xff0c;我都能学会&#xff0c;…

C# Bitmap类型与Byte[]类型相互转化详解与示例

文章目录 一、Bitmap类型转Byte[]类型使用Bitmap类的Save方法使用Bitmap类的GetBytes方法 二、Byte[]类型转Bitmap类型使用MemoryStream将Byte[]数组转换为Bitmap对象使用System.Drawing.Imaging.BitmapImage类 总结 在C#编程中&#xff0c;Bitmap类型和Byte[]类型之间的相互转…

思维+数学,CF 1138B - Circus

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1138B - Circus 二、解题报告 1、思路分析 设第一组会小丑和杂技的人数分别为x1, y1 第二组会小丑和杂技的人数分别为x2, y2 显然根据要求有&#xff1a; x1 y2 > x1 x2 x2 y2 上式说明第二组每…

下拉框模糊搜索 输入框中的值映射不上去的问题

强制更新 Element-ui中el-select选择器实现输入和搜索&#xff0c;可显示输入值的详细讲解_el-select可输入可选择-CSDN博客https://blog.csdn.net/qq_63438013/article/details/134512480 <el-select keyup.enter.native"handleQuery" blur"selectBlur&qu…

HNU小学期BSP软件编程基础十道测试题

http://t.csdnimg.cn/Yv0R1 文章参考了这位大佬的代码&#xff0c;在他的基础上进行了纠错、完善等处理。 配置 编程前的准备工作按大佬的流程即可&#xff0c;稍有不同的是学习通课程网站的资料里没有头文件的整个压缩包了&#xff0c;但我们可以下载某个BSP版的工程文件&am…

北京大学长安汽车发布毫米波与相机融合模型RCBEVDet:最快能达到每秒28帧

Abstract 三维目标检测是自动驾驶中的关键任务之一。为了在实际应用中降低成本&#xff0c;提出了利用低成本的多视角相机进行3D目标检测&#xff0c;以取代昂贵的LiDAR传感器。然而&#xff0c;仅依靠相机很难实现高精度和鲁棒性的3D目标检测。解决这一问题的有效方法是将多视…

苍穹外卖--编辑员工和根据id查询员工信息

查询员工信息 编辑员工 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeePageQueryDTO; import com.sky.entity.Employee; import com.sky…

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions Introduction: https://instruct-gs2gs.github.io/ Code: https://github.com/cvachha/instruct-gs2gs Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构&#xff0c;将基于 NeRF 的三维场景编辑方法迁…

IDEA如何创建原生maven子模块

文件 -> 新建 -> 新模块 -> Maven ArcheTypeMaven ArcheType界面中的输入框介绍 名称&#xff1a;子模块的名称位置&#xff1a;子模块存放的路径名创建Git仓库&#xff1a;子模块不单独作为一个git仓库&#xff0c;无需勾选JDK&#xff1a;JDK版本号父项&#xff1a;…

C++ 是否变得比 C 更流行了?

每年都会出现一种新的编程语言。创造一种新语言来解决计算机科学中的挑战的诱惑很难抗拒。一些资料表明&#xff0c;目前有多达 2,500 种语言&#xff0c;这并不奇怪&#xff01; 对于我们嵌入式软件开发人员来说&#xff0c;这个列表并不长。事实上&#xff0c;我们可以用一只…

【Linux】网络新兵连

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 在上一篇博客中&#xff0c;我们简单的介绍了一些Linux网络一些比较基本的概念。本篇博客我们将开始正式学习Linux网络套接字的内容&#xff0c;那么我们开始吧&#xff01; 1.网络中的地址管理 大家一…

uniapp安卓端实现语音合成播报

最初尝试使用讯飞语音合成方式,能获取到语音数据,但是数据是base64格式的,在安卓端无法播放,网上有说通过转成blob格式的url可以播放,但是uniapp不支持转换的api;于是后面又想其他办法,使用安卓插件播报原生安卓语音播报插件 - DCloud 插件市场 方案一(讯飞语音合成) 1.在讯飞…