蓝桥杯 Python B组-说明

本文作者分享了参加2022年蓝桥杯Python B组比赛的心得,从零基础到获得国二奖项的过程。文章提到省赛可能较为简单,但国赛难度提升,需要扎实的算法基础。作者建议备赛时注重方法,利用Python标准库,适当练习DFS等算法。蓝桥杯赛制包括填空和代码题,不允许携带资料,但可查阅Python文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本专栏主要分享介绍蓝桥杯pythonB组备赛经验,希望可以帮到有需要的同学。
更多内容见个人博客


我参加的是2022年的pythonB组,本来是只打算混混省赛的,可能是今年省赛比较简单,加上运气比较好,混到了国二,排名在1/3左右,说实话挺意外的。

省一

国二
比赛基本上是零基础开始准备的,省赛之后因为项目比较忙,自己也是一心摆烂,直接没有准备国赛,到国赛时候写个dfs都要推半天了。其实还是有点遗憾的,当初要是好好准备一个月说不定国一就有了。

写这个文集主要是因为当初本人备赛时候基本没什么Python组的经验贴,有一些题解还需要收费,确实很不容易。(因为时间关系,这里的题解就随缘更了)

所以想把自己的经验给大家分享,希望小白可以少走一些弯路!!!

难度

蓝桥杯在程序设计竞赛中来说算是难度比较低的了(当然近年来难度也在逐渐提高),很多人称蓝桥杯为暴力杯,尤其是省赛,只要会基本的dfs就能混点分,当然这种情况也在逐年减少,但是客观来说蓝桥杯确实不难,只要备赛方法得当,拿个奖完全没问题,大家没必要太担心。

赛制

蓝桥杯为个人赛,一共有十道题目,往年是5填空+5代码,今年改成了2填空+8代码,之后不知道还会不会调整。

填空题都是给出题面,并且保证只有一个正确答案,选手只需要计算出答案提交结果就行,不限制计算方法,你可以使用电脑上的任何软件,比如计算器、Excel…

代码题需要提交代码,跑通给定的测试用例,也就是OJ的形式。题目完全为客观题型,选手所提交作答的运行结果为主要评分依据。

比赛不能携带资料,但是可以查看python自带的文档,会提供草稿纸

注意事项

只能使用Python标准库

只能使用Python自带的IDE

### 蓝桥杯 Python B 备战练习题解题思路 对于蓝桥杯 Python B的备考,掌握特定类型的题目及其解法至关重要。以下是几个典型的练习题目以及相应的解题思路。 #### 题目一:字符串处理 给定一段英文文本,统计其中单词的数量并按字母顺序输出每个单词出现次数。 ```python from collections import Counter import re def word_count(text): words = re.findall(r'\b\w+\b', text.lower()) count = dict(Counter(words)) sorted_words = sorted(count.items(), key=lambda item:item[0]) result = [] for word, freq in sorted_words: result.append(f"{word}: {freq}") return "\n".join(result) text = "This is a test. This test is only a test." print(word_count(text)) # 输出结果按照字母表排序后的词频统计 ``` 此段代码展示了如何利用正则表达式提取单词,并通过 `collections.Counter` 来计算频率[^1]。 #### 题目二:数操作 给出一个整数列表 nums 和目标值 target,在该列表中找到两个不同的索引 i 和 j 使得它们对应的数值相加等于目标值 target 并返回这两个索引成的元 (i,j),如果不存在这样的合,则返回 None。 ```python def two_sum(nums, target): num_to_index = {} for index, value in enumerate(nums): complement = target - value if complement in num_to_index: return (num_to_index[complement], index) num_to_index[value] = index nums = [2,7,11,15] target = 9 result = two_sum(nums,target) if result != None: print("Indices:",result) else: print('No solution found.') ``` 这段代码采用哈希表来存储已经遍历过的数字及其下标位置,从而实现 O(n) 时间复杂度下的查找算法。 #### 题目三:动态规划 假设有一个 n 行 m 列的地图 grid ,地图上的每一个格子要么是障碍物(用 'X' 表示),要么是可以行走的地方(用 '.' 表示)。现在要从左上角走到右下角,请问有多少种走法?每次只能向右或向下移动一步。 ```python def unique_paths_with_obstacles(obstacleGrid): rows, cols = len(obstacleGrid), len(obstacleGrid[0]) dp = [[0]*cols for _ in range(rows)] for r in range(rows): for c in range(cols): if obstacleGrid[r][c]== 'X': continue elif r==0 and c==0 :dp[r][c]=1 else : up=dp[r-1][c] if r>0 else 0 left=dp[r][c-1] if c>0 else 0 dp[r][c]=(up+left)%((10**9)+7) return dp[-1][-1] grid=[['.','X','.'],['.','.','X'],['.','.','.']] print(unique_paths_with_obstacles(grid)) ``` 上述例子运用了二维动态规划的方法求解路径数量问题,同时考虑到了边界条件和障碍物的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值