蓝桥杯pythonb组备赛习题
时间: 2025-04-19 20:46:34 浏览: 30
### 蓝桥杯 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))
```
上述例子运用了二维动态规划的方法求解路径数量问题,同时考虑到了边界条件和障碍物的影响。
阅读全文
相关推荐


















