包含3的数字-第10届蓝桥杯省赛Python真题精选

news2024/11/29 8:39:11

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

包含3的数字,本题是2019年3月24日举行的第10届蓝桥杯青少组Python编程第2题,题目要求编写程序打印出1~1000之间包含3的数字。

先来看看题目的要求吧。

一.题目说明

编程实现:

打印出 1~1000之间包含3的数字;

如果3是连在一起的(如233)则在数字前加上&;

如果这个数字是质数则在数字后加上*,例:(3,13*,23*,&33,43*…&233*…)。

输入描述:

输出描述:

按照题意输出的数字,每行一个数字;

样例输出:

3

13*

23*

&33

……

将程序命名为“lq002”。

评判标准:

  • 10 分:完成打印 1~1000 之间包含3的数字;

  • 30 分:在 10 分标准的基础上,找出其中的连3,前面加&;

  • 50 分:在 30 分标准的基础上,找出其中的质数,后面加*。

二.思路分析

这是一道综合性的题目,考察的知识点包括循环、类型转换、质数的判断等。

看到题目描述,超平老师的第一感觉是题意不够清晰。细心的你也许已经注意到了,这里有两个值得商榷的地方。

1). 题目要求打印出 1~1000之间包含3的数字,正常理解的话,会输出3、13、23、30、31、32等所有包含3的数字,但从输出样例来看,并没有包含30、31、32这些数字;

2). 3是质数,应该在数字后面加上*;

为了避免理解上的分歧,我把题目意思统一一下,从3开始,每隔10个数,进行一次判断,在输出结果时,3后面应该加*。

从3开始,到1000为止,每隔10进行一次判定,这个比较容易,直接使用for...in循环即可,如下:

for i in range(3, 1000, 10)

这里的难点有如下两个:

  • 如何判断连3的数字;

  • 质数的判断;

先来分析第1个问题,在1000以内,连3的情况,最多只有3个,具体情况可以如下表所示:

图片

聪明的你肯定已经发现了,3位数字的连3是包含两位的连3,因此只需要判断两位连3即可。

在Python中没有直接判断是否包含子数字的方法,但是字符串可以,可以先将数字转成字符串,然后使用in运算符判断即可,例如:

'33' in str(133)

第1个问题解决了,再来看第二个问题,如何判断质数呢?

质数又称素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,否则称为合数,注意1既不是质数也不是合数。

下图列出了50以内的质数:

图片

从上面的定义就很容易想到判断方法,对于一个整数n,从2开始到n - 1,逐个判断是否能被整除,如果有,就不是质数,否则就是合数。

为了方便起见,我们可以定义一个函数,用于判断是否为质数,返回布尔值True或False。

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

三.编程实现

根据上面的思路分析,我们分两步来编写代码:

  • 定义判断质数的函数

  • 打印数字

1. 定义判断质数的函数

根据上面的思路分析,我们可以快速地编写代码如下:

图片

需要注意的是,为了确保完整性,需要增加一个 <= 1的判断。

从结果来看,这个程序是对的,但是效率不高,比如当数字为97时,按照上面的程序,需要判断95次,实际上,我们最多只需要判断8次就行,你知道为什么吗?

以数字24为例,24的因数有如下8个:

图片

我们可以把它们分成4组:

1 * 242 * 123 * 84 * 6

发现这里面的规律了吗?

以4为分界线,左边有一个因数,那么右边必然也有一个因数,二者的乘积刚好是24,它们是对称的。

再来看看36的情况,它有10个因数,如图:

图片

以6作为分界线,左边有一个因数,右边必然有一个因数与之对应,其乘积刚好是36。

那么,这里的分界线是多少呢?

相信你已经发现了,分界线就是数字的算术平方根的整数部分,对于36而言,其算术平方根刚好是6,对于24而言,其算术平方根为4.89898,取整数部分为4。

所以,在判断整数n是否为素数的时候,我们并不需从2到n - 1都判断一次,因为它包含了很多无效和重复判断,只需要判断2到n的平方根(取整)即可。

结合数学函数库,可以将上述代码进行优化如下:

图片

这样可以极大地提升判断素数的效率,数字越大,提升的效率越明显。

有两个细节需要注意:

1). sqrt()函数得到的结果是小数,需要使用int函数进行取整,int会直接去掉小数部分,保留整数部分,不是四舍五入;

2). range()函数的特点是虎头蛇尾(有头无尾),所以需要再加上1,确保包含n的算术平方根(比如数字36算术平方根6);

如果你彻底理解了这两点,还可以使用ceil()函数简化,代码如下:

for i in range(2, math.ceil(n))

效果完全一样,ceil() 函数返回一个大于或等于 x 的的最小整数。

2. 打印数字

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

图片

简单说明3点:

1). 由于是从3开始,每隔10个数进行判断,所以数字必然是包含3的,只需要判断是否包含33即可;

2). 输出的时候,需要将数字转成字符串,再进行连接操作;

3). 函数的定义必须要放在前面,因为Python是解释性语言,在执行代码的时候是从上到下边解释边执行的。 

运行程序,输出结果如下:​​​​​​​

3*13*23*&3343*53*6373*83*93103*113*123&133143153163*173*183193*203213223*&233*......

这里只列出了从3到233的数字,为节省篇幅,后面的部分就省略了。

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

四.总结与思考

本题是中级组编程部分第2题,分数为50分,代码在20行左右,涉及到的知识点包括:

  • 循环语句,简单的枚举算法;

  • 条件语句的嵌套使用;

  • 函数的定义及使用;

  • 类型转换;

  • 字符串的运算;

题目难度中等,涉及到的知识点还是挺多的,这就要求考生具备扎实的基础,对3大程序结构(顺序、选择、循环)要非常熟悉,并快速找到最简单的方法。

关于质数(素数)的判断,这是一个经典的编程问题,首先要掌握最基础的算法,然后再考虑是否可以进行优化。

说到质数,超平老师给你留一个思考题,除了本文给出的两种方法,你还有其他的思路吗?你可以自己想一想,或者查阅相关资料,说不定会有惊喜的发现哟。

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

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

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

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

相关文章

微信小程序:实现多个按钮提交表单

效果 核心步骤 通过data-type给不同按钮进行设置&#xff0c;便于很好的区分不同按钮执行不同功能 data-type"" 完整代码 wxml <form action"" bindsubmit"formSubmit"><button style"margin-bottom:5%" data-type"pa…

技术共建,飞桨与OpenVINO™ 共创开放AI生态

在智能新时代&#xff0c;百度和英特尔作为行业引领者&#xff0c;一直专注于构建强大的产品组合和开放的软件生态系统。为此&#xff0c;百度飞桨打造功能丰富、开源开放的产业级深度学习平台&#xff0c;英特尔推出OpenVINO™工具套件&#xff0c;并致力于借助双方技术来增强…

云栖大会 | 科技改变生活,移远通信实力引领智能未来

科技对生活的改变体现在出行方式、娱乐方式、支付方式等多个方面&#xff0c;已经融入了我们的日常生活&#xff0c;为我们带来了便捷、高效、舒适的体验。 10月31日—11月2日&#xff0c;云栖大会在杭州盛大召开。本次大会以“计算&#xff0c;为了无法计算的价值”为主题&…

亚马逊云科技实操教学带你注册并使用海外服务器

手把手教你注册和使用亚马逊云科技海外服务器。 前置条件 准备&#xff1a; 一个在用邮箱 一张在用的有Visa或者Master标志的信用卡 一部在用的电话 一个支持key文件导入的ssh客户端 注册亚马逊云科技 在任意浏览器上搜索“亚马逊云科技”&#xff0c;打开官网&#xff0c…

Padding负值遮挡视图(下拉刷新头部)

padding值为负值时&#xff0c;表示当前视图被遮住了一部分。 可使用 view.set Padding( int left , int top , int right , int bottom) 方法进行动态设置。 下拉刷新头部的实现&#xff1a; (1) 获取屏幕大小。(2) 设置 刷新头高度&#xff08;定值&#xff09; 设置 显…

新手学计算机编程入门,自学编程入门从哪里入手开始学习

新手学计算机编程入门&#xff0c;自学编程入门从哪里入手开始学习 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;向如图这个…

哪些指标可以评估实施MES管理系统的效益

在现代制造业的浪潮下&#xff0c;MES生产管理系统已成为众多企业的得力助手。然而&#xff0c;如何判断MES管理系统是否真的为企业创造了价值&#xff1f;本文将为您解析三个核心指标&#xff0c;助您深入了解MES管理系统的实际效益&#xff0c;确保您的投资决策明智有据。 一…

PHP解析带BOM头的JSON数据,对接他人接口的时候,使用json_decode(),返回null的问题与解决方法

在php开发中会遇到和他人对接接口&#xff0c;对方使用json传输数据&#xff0c;使用json_decode()函数却无法将json数据转换为数组。 先看封装的代码 private function curlPost($url, $post_data []) {$ch curl_init() or die (curl_error());curl_setopt($ch, CURLOPT_…

《向量数据库指南》——用 Milvus Cloud和 NVIDIA Merlin 搭建高效推荐系统结果

结果 以下展示基于 CPU 和 GPU 的 3 组性能测试结果。该测试使用了 Milvus 的 HNSW(仅 CPU)和IVF_PQ(CPU 和 GPU)索引类型。 商品向量间相似度搜索 对于给定的参数组合,将 50% 的商品向量作为查询向量,并从剩余的向量中查询出 top-100 个相似向量。我们发现,在测试的参…

el-cascader级联选择器选中一个全选中问题

问题 只选中一个却把同级全选中 解决 :props中添加label、value、children属性 label、value、children属性值需要和后端返回的集合中的字段名保持一致 后端返回数据&#xff1a;

基于寄生捕食算法的无人机航迹规划-附代码

基于寄生捕食算法的无人机航迹规划 文章目录 基于寄生捕食算法的无人机航迹规划1.寄生捕食搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用寄生捕食算法来优化无人机航迹规划。 …

交换机基础(零):交换机基础配置

一、华为设备视图 常用视图 名称 进入视图 视图功能 用户视图 用户从终端成功登录至设备即进 入用户视图&#xff0c;在屏幕上显示 kHuawei> 用户可以完成查看运行状态和统 计信息等功能。在其他视图下 都可使用return直接返回用户视 图 系统视图 在用户视图下&…

面试常考:从lc24《两两交换链表中的节点》 到 lc25《K 个一组翻转链表》带你认识链表递归

1 lc24《两两交换链表中的节点》 1.1 描述 1.2 题解 1.2.1 递归解法 下面的三行注释要理解透彻&#xff0c; public ListNode swapPairs(ListNode head) {if(headnull||head.nextnull)return head;// 具体的两两交换过程ListNode nexthead.next; ListNode nextNexthead.next…

(C)求x/1!-........

#include<stdio.h> #include<stdlib.h> #include<math.h> void main() {double a1,b1,c0,x;int i,j1;printf("输入x的值:");scanf_s("%lf",&x);for(i1;i<10;i){a*x;b*i;cj*a/b;j-j;}printf("s%10.5f",s); }

Mysql基础+高级一文搞定

创建数据库 create database db_yassels; 切换数据库 use db_yassels; 创建table create table Persons1( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ); 查看table select *from Persons1; 插入数据 insert…

Pattern Recognition:最大化高斯性准则

近日&#xff0c;清华大学、昆明理工大学、北京邮电大学联合在模式识别权威杂志 Pattern Recognition (IF 8.0) 上发表论文&#xff0c;报告了一种最大化高斯性 (Maximum Gaussianality) 的训练准则&#xff0c;用于对数据分布进行规整。 分布规整与标准化流模型 我们知道数据…

电视「沉浮录」:跌出家电“三大件”?

【潮汐商业评论/原创】 “这年头谁还看电视&#xff0c;家里电视近一年都没打开过了&#xff0c;我明天就打算把它二手卖掉。”想到已落灰许久的电视机&#xff0c;Andy打开了二手平台。 “要不是这几年孩子网课多&#xff0c;我是真没考虑换新电视&#xff0c;家里用了8年的…

阿里云双11服务器返现活动来了

大家好&#xff0c;我是彭涛&#xff01; 阿里云双11活动&#xff0c;我成为了阿里云推广大使&#xff0c;从阿里云朋友哪儿搞了阿里云福利。 以前&#xff1a;给大家搞的 1c1g 的服务&#xff0c;太难了&#xff0c;今年没办法弄了&#xff01; 今年&#xff1a;新用户 99元…

S32K312 ITCM代码使用示例

在上一篇文章中&#xff0c;介绍了S32K312 DTCM在代码中使用示例&#xff0c;具体可以参考配置文件的编辑&#xff0c;本文主要介绍ITCM的代码使用和调试。ITCM是将功能代码放到了高速缓存中&#xff0c;一方面频繁调用的函数可以快速访问&#xff0c;提高效率&#xff1b;另一…

Talk | CoRL 2023 Oral 上海交通大学迮炎杰:通用机器人操作的视觉表征

本期为TechBeat人工智能社区第543期线上Talk&#xff01; 北京时间11月02日(周四)20:00&#xff0c;上海交通大学—迮炎杰的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “通用机器人操作的视觉表征”&#xff0c;他分享他们团队在进一步拓展能够…