最长数字子串-第12届蓝桥杯国赛Python真题解析

2024-05-15 03:12

本文主要是介绍最长数字子串-第12届蓝桥杯国赛Python真题解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

最长数字子串,本题是2021年5月29日举办的第12届蓝桥杯青少组Python编程全国总决赛真题编程部分第3题。题目要求编程对给定的字符串,计算次字符串中最长的数字子串的长度。

先来看看题目的要求吧。

一.题目说明

编程实现:

给定一个含有字母和数字的字符串,输出此字符串中最长的数字子串的长度,如:

字符串“a2a22d”,最长的数字子串为22,长度为2,故输出2;

字符串“lq12h567j765”,最长的数字子串为567和765,长度都为3,故输出3;

输入描述:

输入一个含有字母和数字的字符串(5 < 字符串长度 < 101)

输出描述:

输出此字符串中最长的数字子串的长度

样例输入:

a2a22d

样例输出:

2

二.思路分析

这是一道和字符串相关的题目,考查的知识点主要包括循环、条件、变量和字符串处理。

解决本题的思路比较简单,也很直观,只需要一次循环遍历就可以,如图所示:

图片

其过程描述如下:

1). 从第一个字符开始,逐个判断,如果当前是数字,则将数字串长度加1;

2). 如果当前不是数字,说明数字串结束了,此时更新最大长度,并将数字串长度清零;

3). 重复这个过程直到最后一个字符。

为了记录当前数字串的长度和最大长度,可以定义两个变量cur_len和max_len来表示。

其流程图如下:

图片

这么看,应该就非常清楚了吧。思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

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

图片

代码不多,说明三点:

1). 在判断是否为数字时,可以使用Python内置的isdigit()函数,准确来说,它是字符串的方法;

2). 如果当前字符不是数字,需要更新max_len,然后将cur_len清零,注意二者的顺序,不能颠倒了,而且在循环结束后还需要再更新一次;

3). 在获取两者的较大值时,直接使用max()函数最为简单,当然也可以使用if语句来比较。

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

四.总结与思考

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

  • 循环语句;

  • 条件语句;

  • 字符串相关函数;

  • max()函数;

本题难度一般,关键点有两个,一是理解在遍历字符串的过程中,需要如何处理max_len和cur_len这两个变量,二是如何判断当前字符是否是数字。

在Python编程中,字符串提供了两个判断数字的方法:

1). isdigit()

2). isnumeric()

isdigit()方法用于判断字符串中是否只包含数字字符(0-9),而isnumeric()方法用于判断字符串中的字符是否为数字字符,包括阿拉伯数字、罗马数字、汉字数字等各种数字形式。

例如:

# 定义包含不同类型数字字符的字符串s1 = "12345"  # 只包含阿拉伯数字s2 = "ⅣⅤⅥ"  # 罗马数字s3 = "一二三"  # 汉字数字
# 使用isdigit()和isnumeric()方法判断字符串中的字符print(s1.isdigit())  # Trueprint(s1.isnumeric())  # True
print(s2.isdigit())  # Falseprint(s2.isnumeric())  # True
print(s3.isdigit())  # Falseprint(s3.isnumeric())  # True

对于本题而言,使用isdigit() 和isnumeric() 都是可以的。

当然,有些同学会说,还是有点记不住,平时用的也不多,有没有其他更简单的方法呢?

那超平老师再告诉你一个最简单,也最通用的方法,就是利用ASCII码表中数字字符 '0' 到 '9' 的连续性来进行判断,即:

c >= '0' and c <= '9'

由于Python允许链式比较,所以可以简化为:

'0' <= c <= '9'

这样一来,代码就变得更加简洁了,这也是Python的一大特性。

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

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

需要源码的,可以添加本人微信。

这篇关于最长数字子串-第12届蓝桥杯国赛Python真题解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建