数字组合-第10届蓝桥杯省赛Python真题精选

news2024/11/27 21:43:54

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第1讲。

数字组合,本题是2019年3月24日举行的第10届蓝桥杯青少组Python编程第1题,题目要求将1、3、5、8这4个数字进行组合得到无重复的三位数。

先来看看题目的要求吧。

一.题目说明

编程实现:

用 1、3、5、8 这几个数字,能组成的互不相同且无重复数字的三位数各是多少?总共有多少个?

输入描述:

输出描述:

多行数字,每行一个三位数组成的三位数的总个数

将程序命名为“lq001”。

评判标准:

  • 10 分:能输出至少一个三位数字;

  • 30 分:输出了多于10个三位数字,且确实不重复;

  • 50 分:完全符合题意,即在30分标准的基础上,正确地输出了可组合的三位数和组合后三位数的总数量。

二.思路分析

这是一道典型的排列组合题目,考查的知识点包括循环和列表运算。

对于本题通常有如下两种解决方案:

  • 枚举算法

  • 组合函数

所谓的枚举算法,就是使用循环语句将所有的情况都列举出来,这也是计算机最擅长的事情。

要组合成一个三位数,可以分成如下3步:

1). 从4个数字中选定一个数字,作为百位;

2). 从剩下的3个数字中选定一个数字,作为十位;

3). 从剩下的2个数字中选一个数字,作为个位;

我们可以借助树形图来理解组合的过程,这里只列出了百位为1的情况,如图所示:

图片

当百位为1时,一共有6种不同的组合,相应的,百位还可以分别设置为3、5、8,以此类推,一共有24种不同的组合。

因此,我们可以使用三层循环,分别实现百位、十位和个位的选择。

这里的难点在于,在选定一个数字之后,如何去掉这个数字,以避免重复呢,你有什么好的思路吗?

一般来说,可以有如下两种方式:

1). 每一次都从4个数字中选定一个数字,然后再过滤掉重复的数字;

2). 每选定一个数字,就从列表中去掉这个数字,但需要额外使用一个列表,否则一轮循环完毕,列表就为空了。

至于组合函数的方法,就比较简单了,直接使用itertools库中提供的permutations函数就可以了。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分别使用两种方式来编写代码:

  • 枚举算法

  • 组合函数

1. 枚举算法

根据上面的思路分析,可以编写代码如下:

图片

简单说明3点:

1). 3层循环,分别表示选择百位、十位和各位;

2). 为了避免重复,需要对3个数字进行判断,将重复出现的数字过滤掉;

3). 输出组合数字的时候,使用了数学的方法,当然,你也可以使用print直接输出,不过需要注意使用sep参数去掉默认的空格,参考代码如下:

print(nums[i], nums[j],nums[k], sep="")

2. 组合函数

使用组合函数,相对就简单多了,代码如下:

图片

简单说明4点:

1). permutations是itertools库中的函数,需要先导入才能使用;

2). permutations函数有两个参数,第1个参数是可迭代对象,包括列表、字符串、元组、字典,第2个参数是组合元素的个数,比如本案例中的3;

3). permutations函数返回结果是可迭代对象,通常使用for...in循环来处理,迭代处理是其类型为元组类型;

4). 对于元组和列表,可以使用解包运算,逐个取出其中的内容。

什么是解包运算呢?

解包,也叫拆包,你可以这样理解,一个列表或字符串是一个整体,想把列表或字符串中每个元素或字符当成一个独立个体剥离出来,这个过程就是解包。

举一个简单的例子,如下:

图片

这是一个非常好用的特性,可以极大地节省代码,赶紧收下吧。

运行程序,执行结果如下:135

13815315818318531531835135838138551351853153858158381381583183585185324

至此,整个程序就全部完成了。

四.总结与思考

本题是中级组编程部分第1题,分数为80分,代码在10行以内,涉及到的知识点包括:

  • 循环语句,尤其是嵌套循环;

  • 条件语句及逻辑与运算;

  • 列表操作;

  • 枚举算法;

  • 组合函数的基本使用;

题目难度一般,但是需要考生具备扎实的基础,尤其是列表操作,必须要熟练掌握。同时要善于使用一些常见的Python库,可以极大的提升编程的效率,这也是Python的优点之一,有大量成熟的库函数供我们使用。

超平老师给你留一个思考题,在上面的思路分析中,提到了另一种枚举的思路,每选定一个数字,就将该数字从列表中删除,你知道要如何实现吗,赶紧尝试一下吧。

你有什么好的思路和方法,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01-学成在线项目基础环境模块搭建

基础工程搭建 项目根目录 创建一个空工程xuecheng-plus即项目的根目录,进入Project Structure检查jdk是否配置正确 新增.gitignore文件用来设置工程中不需要向仓库提交的内容 HELP.md target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/** !**/src/test/** #### STS …

天津重点大数据培训 大数据培训的三个重要内容

随着互联网的发展和技术的进步,大数据的应用范围越来越广泛,对于企业和个人来说,学习和掌握大数据技术已经成为了必不可少的一项能力。大数据技术是当前和未来的发展方向,对于想进入互联网行业或从事相关技术工作的人来说&#xf…

毕业论文常用分析方法

毕业论文选题结束后,需要根据不同的研究主题以及研究目的确定相应的分析方法。同类型的研究方法有很多种,今天梳理了毕业论文写作的常用分析方法,分模块进行汇总整理,方便大家对照查找。 一、基本描述分析 基本描述统计分析包括频…

大坝水库安全监测终端MCU,智能化管理的新篇章!

我国目前拥有超过9.8万座水库大坝,其中超过95%为土石坝,这些大坝主要是在上世纪80年代以前建造的。这些水库大坝在保障防洪、发电、供水、灌溉等方面发挥了巨大的作用,但是同时也存在一定的安全风险,比如坝体结构破损、坝基渗漏、…

Linux环境基础开发工具使用(一)万字讲解

文章目录 一、Linux 软件包管理器 yum1、什么是软件包2、关于 rzsz3、查看软件包4、如何安装软件5、如何卸载软件 二、Linux编辑器——vim1、IDE例子2、Linux编辑器-vim使用3、 vim的基本概念4、 vim的基本操作5、 vim正常模式命令集1、插入模式2、从插入模式切换为命令模式3、…

建模和图表工具:Software Ideas Modeler Crack

用于图表、软件设计和分析的 CASE 工具 Software Ideas Modeler 是一款智能CASE 工具和 图表软件,支持 UML、SysML、ERD、BPMN、ArchiMate、流程图、用户故事、线框图。 提升用户体验和人工智能集成 - Software Ideas Modeler 14.05 最近发布的 14.05 版本带来了一…

uni-app微信小程序打开第三方地图

需求 小程序中有个按钮点击以后会调用手机中第三方地图进行导航。参数 位置信息 经度 与纬度。 实现方法 uni.openLocation({latitude: Number(地址纬度),longitude: Number(地址经度),name: 地址名称,address: 地址详情,success: function (res) {console.log(打开系统位置地…

每日汇评:通胀数据公布前,欧元复苏失去动力

欧元/美元周一上涨后回落至1.0600; 市场参与者将密切关注欧元区通胀数据; 如果价格跌破1.0580-1.0580区间,卖方可能会采取行动; EUR/USD积聚了多头动能,周一实现了一周以来最高的日内收盘价,超过1.0600。然…

想知道自己转本复习的效果,就试试这些方法吧

在你埋头苦学的时候,你觉得自己复习得怎么样?用下面的方法检测一下吧~ 01做题时间证明掌握程度 做题的快慢可以验证知识掌握和熟练程度。做题速度慢往往是因为对知识不熟悉。 像数学等理科,会对计算和解题速度要求比较高,需要先…

轻量级gif制作工具 GIFfun中文 for mac

GIFfun是一款GIF制作工具,可以帮助用户从照片和视频中创建GIF动画。该软件具有多种功能,例如GIF转视频、视频转GIF、照片转GIF、照片转视频、GIF转JPG、调整GIF大小、PDF转GIF、PDF转JPG、裁剪视频、GIF编辑等。 GIFfun还提供了专业版功能,如…

浅析 TLS(ECDHE)协议的握手流程(图解)

前言 通过 wireshark 抓取 HTTPS 包,理解 TLS 1.2 安全通信协议的握手流程。 重点理解几个点: TLS 握手流程:通过 wireshark 抓取 HTTPS 包理解。协商加密:双方通过 ECDHE 椭圆曲线的密钥交换算法,协商出共享的 会话…

高效管理用户权限:深入探索Spring Security的多用户类型认证、授权和Token刷新

前言 对于spring secutiry 来讲,其默认是只支持一种数据类型进行认证的,因为最后组件的方法仅为:loadUserByUsername(String username) 方法。 如果有多个系统来使用这个认证模块,会导致查询问题。这也就是不支持多用户类型认证…

C# TabControl控件设置多行属性multiline为true后切换页签出现空白

一、问题描述: 最近一直在做C#项目,随着项目的不断扩大,Form窗体中TabControl控件的内容一行已经放不下了,于是乎就设置了属性multiline为true,但是随之而来的就是一个新问题。当切换其他程序窗口返回后,就…

10套地理集图库免费分享

前面为大家分享了《161幅2023版可印刷出版的中国标准地图》,还没领取的朋友请点击查看原文领取,今天整理10套地理图库免费分享给大家,主要包括3D地图、地质动图、中国专题图、世界主要城市地图等一共有433张图。 现在只需关注我们“水经注GIS…

rqt-robot-steering控制面板

目录 安装rqt-robot-steering控制面板(已安装则跳过)新建一个终端,先启动ros系统再新建一个终端,运行rqt-robot-steering再打开一个终端,验证使用控制面板控制小乌龟移动 安装rqt-robot-steering控制面板(已…

第一次使用配音软件要怎么选择?

现在的配音软件软件很多,各种类型的都比较多,对于新手小白来说不知该如何选择,今天就来给你分享几款好用的配音软件。不论是制作短视频还是制作平常音频都完全可以。第一款:悦音配音这是一款专业的视频配音软件,多端使…

STM32F4X SDIO(四) SDIO控制器

STM32F4X SDIO(四) SDIO控制器 STM32F4X SDIO控制器SDIO控制器框图SDIO控制器时钟适配器寄存器FIFO控制单元命令路径数据路径 SDIO寄存器SDIO控制相关寄存器SDIO电源控制寄存器 (SDIO_POWER)SDIO时钟控制寄存器 (SDIO_CLKCR)SDIO_CK相位 SDIO命令响应相关…

Linux中正则表达式等

grep命令:主要作用就是过滤查找文本内容 常用的选项有: -m 数字:匹配几次之后停止,按行匹配,不是按字符个数,例如 -v:取反 例如: -n:显示匹配的行号 例如: -c:仅显示匹配的行数,不显示匹配内…

C/C++满足条件的3位数 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C满足条件的3位数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C满足条件的3位数 2020年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 编写程序,按从小到大的顺序…