逢3必过报数游戏-第13届蓝桥杯省赛Python真题精选

2024-06-15 20:52

本文主要是介绍逢3必过报数游戏-第13届蓝桥杯省赛Python真题精选,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

逢3必过报数游戏,本题是2022年4月17日举办的第13届蓝桥杯青少组Python编程省赛真题编程部分第4题,13届一共举办了两次省赛,这是第一次省赛。题目要求编程计算N个小朋友在玩报数游戏时第一个报错的小朋友的编号。

先来看看题目的要求吧。

一.题目说明

编程实现:

N个小朋友围成一圈(N ≤ 60),并按照顺序进行编号(编号1到N),然后从编号为1的小朋友开始持续报数,当报到的数字中含3或者数字是3的倍数的小朋友,不能报数字而是报“过”(例如:3 , 6 , 13 , 31这些数字都报“过”)。

一次游戏中,小朋友们玩的不亦乐乎,突然有小朋友发现前边报过的数字中已经有报错的,而后边小朋友还在继续报数。请你帮助小朋友找出第一次报错的小朋友是编号几。

例如:有3个小朋友,编号为1 , 2 , 3。编号1的小朋友报1、编号2的小朋友报2、编号3的小朋友报“过“,编号1的小朋友报4,编号2的小朋友报5、编号3的小朋友报6、编号1的小朋友报7。此时第一次报错的小朋友为编号3。因为编号3的小朋友应该报“过“时,报成了6,而6是3的倍数。

输入描述:

第一行输入一个正整数N,表示小朋友的人数。

第二行输入一组有错的报数序列(使用0表示含3或者是3的倍数的数字),序列元素之间以一个英文逗隔开。

输出描述:

输出第一次报错的小朋友是编号几。

输入样例:

3

1,2,0,4,5,6,7

输出样例:

3

二.思路分析

这是一道简单的算法题,涉及的知识点包括循环、条件、列表和模拟算法等。

报数游戏是大家非常熟悉的场景,游戏最大的特点就是首尾相连,没有尽头,你可以一直报下去。

图片

解决报数游戏问题的典型思路是模拟算法,就是通过程序来模拟报数的过程,然后根据题目的要求处理好细节。

我们可以使用循环来模拟报数过程,循环的次数为报数序列的长度,从1开始报数,当报到和3有关的数字时,将数字设置为0,然后继续报数。

在模拟的过程中,同时和报数序列进行对比,如果二者相同,说明报数正确,如果不相同,则说明报数错误,如图:

图片

列表的第6项不相等,说明处在第6个位置上的小朋友出错了,那么这个小朋友的编号是多少呢?

这个和小朋友的人数有关系,如果小朋友的人数 > 6,那么就是第6个小朋友,如果小朋友人数 < 6呢?

这就涉及到周期问题,对于周期问题,通常需要结合取模运算来处理。

假定当前数字为m,一个周期的长度为k,其典型的模式如下:

(m - 1)% k + 1

之所以要先减1再加1,是为了确保临界点的正确性。

以大家最熟悉的星期为例来说, 一个星期有7天,可以分别使用数字1、2、3、4、5、6、7来表示。

在这个周期问题中,k = 7,当m的取值是1~6之间,直接使用m % 7是可以的,但是当m =7时,m % 7 = 0,这就有点问题了。

对于任何整数k,进行取模运算,得到的结果一定在 0 ~ k - 1之间,如果需要得到 1~k,就需要先将数字减1,得到余数之后再加1。

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

三.编程实现

根据上面的思路分析,我们编写程序如下:

代码不多,说明3点:

1). 跟3有关的数字有两种情况,一是3的倍数,用余数来判断,二是包含数字3,用字符运算in来判断;

2). 由于下标i是从0开始的,因此小朋友的编号应该是i + 1;

3). 循环结束,i + 1就是小朋友的编号,但是存在超过n的情况,因此需要使用余数运算进行处理。

至此,整个程序就全部完成了,你可以输入不同的数据来测试效果啦。

四.总结与思考

本题代码在10行左右,涉及到的知识点包括:

  • 循环语句;

  • 条件语句;

  • 列表操作;

  • 模拟算法;

本题代码不多,难度中等,关键点有两个,一是使用模拟算法来模拟报数的过程,二是使用余数来处理周期问题。

周期问题在编程中出现的频率是非常高的,必须要熟练掌握,并做到灵活运用,务必要理解上面提到的通用公式:

(m - 1)% k + 1

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

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

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

这篇关于逢3必过报数游戏-第13届蓝桥杯省赛Python真题精选的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064549

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统