1. 题目背景与价值解析
Python小屋系列编程题是董付国老师精心设计的Python实战练习题集,其中131-140题主要面向已有基础语法知识的学习者,重点训练字符串处理、数学运算、逻辑推理等核心编程能力。这组题目特别适合已经学完Python基础语法,但缺乏实战经验的中级学习者。
作为一线Python讲师,我经常推荐学生通过这类小型编程题来巩固知识。这类题目有三大独特价值:首先,每道题都能在20行代码内解决,不会让初学者望而生畏;其次,题目设计巧妙,往往需要综合运用多个知识点;最重要的是,完成这些题目能快速积累解决实际问题的经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目详解与实现思路
2.1 第131题:字符串加密
题目要求实现一个简单的字母替换加密算法,将输入字符串中的每个字母替换为字母表中其后第n个字母。例如n=3时,"a"变为"d","z"循环变为"c"。
核心解决思路:
- 使用ord()获取字符ASCII码
- 对字母进行位移计算
- 处理边界情况(z之后循环到a)
- 使用chr()将ASCII码转回字符
python复制def encrypt(text, shift):
result = ""
for char in text:
if char.isalpha():
base = ord('a') if char.islower() else ord('A')
new_pos = (ord(char) - base + shift) % 26
result += chr(base + new_pos)
else:
result += char
return result
注意:实际应用中这种简单替换加密并不安全,本题仅用于练习字符串操作。
2.2 第132题:矩阵转置
要求不借助NumPy等库,实现二维列表的转置操作。例如将[[1,2,3],[4,5,6]]转为[[1,4],[2,5],[3,6]]。
这里展示两种实现方式:
方案一:使用zip和列表推导式
python复制def transpose(matrix):
return [list(row) for row in zip(*matrix)]
方案二:传统循环实现
python复制def transpose(matrix):
return [[row[i] for row in matrix]
for i in range(len(matrix[0]))]
两种方案各有优劣:第一种更Pythonic但可读性稍差,第二种更直观但代码略长。在实际教学中,我通常会先讲解第二种方案,等学生理解转置原理后再介绍第一种。
2.3 第133题:素数生成器
生成指定范围内的所有素数,要求使用埃拉托斯特尼筛法实现。
python复制def primes_in_range(start, end):
if end < 2:
return []
sieve = [True] * (end + 1)
sieve[0] = sieve[1] = False
for current in range(2, int(end ** 0.5) + 1):
if sieve[current]:
sieve[current*current :: current] = [False] * len(s
