蓝桥杯python初级赛题
时间: 2024-12-27 07:22:31 浏览: 7
### 蓝桥杯 Python 初级组 比赛 题目
#### 门牌号问题
此题要求计算从1至2020之间所有数字中'2'这个字符出现的总次数。通过遍历每一个可能的门牌号码并将其转换成字符串形式来逐个统计其中含有'2'的数量,最终汇总得到总数[^5]。
```python
n = 2020
num2 = 0
for i in range(n):
x = str(i + 1)
n2 = x.count('2')
num2 += n2
print(num2)
```
#### 蛇形填数问题
该问题是让参赛者按照特定模式填充一个无限大的二维数组,并根据给定的位置查询对应的数值。这种类型的题目通常涉及到坐标变换以及规律识别的能力[^3]。
```python
def snake_fill(x, y):
layer = max(abs(x), abs(y))
start_num = (2 * layer - 1) ** 2 + 1 if layer != 0 else 1
offset_x, offset_y = abs(x) - layer, abs(y) - layer
if x >= 0 and y > 0:
return start_num + 4 * layer * (layer - 1) / 2 + x + y
elif x < 0 <= y:
return start_num + 4 * layer * (layer - 1) / 2 + (-x + y - 1)
elif x <= 0 and y < 0:
return start_num + 4 * layer * (layer -x - y - 2)
else: # x > 0 and y <= 0
return start_num + 4 * layer * (layer - 1) / 2 + (x - y - 3)
# 测试例子
print(snake_fill(0, 0)) # 应输出 1
print(snake_fill(-1, 1)) # 应输出 3
```
阅读全文