python重点内容(字符串格式化、断言、函数、列表推导式、递归、类),练习与讲解
重点内容(字符串格式化、断言、函数、列表推导式、递归、类),练习与讲解
一、第四章:字符串格式化方法(练习题)
【基础题】
-
使用
%格式化输出:
学生姓名为"Lily",成绩为92分,输出:Lily 的成绩是 92 分 -
使用
str.format()输出:
一个商品单价12.5元,数量4,输出总价(保留两位小数)。 -
使用 f-string 输出:
半径为3.5的圆面积(保留 3 位小数)。
【提升题】
-
用三种格式化方式分别输出:
今天是 2025 年 12 月 8 日 -
使用 f-string 在一行中输出表达式:
3 + 5 = ?
二、第八章:断言 assert(练习题)
【基础题】
-
写一段代码,输入一个年龄
age,使用assert保证年龄不小于 0。 -
使用断言保证列表不是空列表,否则提示
"列表不能为空"。
【提升题】
- 写一个函数
get_score(s),断言s在 0 到 100 之间。
三、第五章:函数(参数类型 + 列表推导式 + 递归)
(一)函数参数类型练习题
【基础题】
-
定义一个函数
add(a, b=10),返回两数之和,测试:add(5)add(5, 3)
-
定义一个函数
total(*args),返回所有参数的和。 -
定义一个函数
info(name, **kwargs),打印:
name: ...
key1: value1
key2: value2
【提升题】
- 编写函数
calc(a, b, *args, **kwargs),分别打印参数内容,理解各种参数的顺序。
(二)列表推导式练习题
【基础题】
-
用列表推导式生成 1 到 10 的平方列表。
-
用列表推导式从列表
[1,2,3,4,5,6]中取出所有偶数。 -
给出列表
names = ["Tom", "lily", "alice", "BOB"]
使用列表推导式生成所有名字的大写形式。
【提升题】
- 用列表推导式生成一个 3×3 的二维列表:
[[1,2,3],[4,5,6],[7,8,9]]
(三)递归调用练习题
【基础题】
-
写一个递归函数
sum_n(n),返回 1 + 2 + ... + n。 -
写一个递归函数计算斐波那契数列:
f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2)
【提升题】
- 用递归求一个列表的最大值:
max_list([3,1,4,2,5])
四、第六章:类 Class 练习题
(一)定义类与实例属性
【基础题】
- 定义一个类
Person:
- 属性:
name,age - 方法:
show()输出"name:..., age:..."
创建两个对象测试。
(二)实例方法
- 定义一个
Student类:
- 属性:
name,scores(列表) - 方法:
avg()返回平均分
实例化一个学生并求平均分。
(三)综合提升题
- 定义一个
Rectangle类:
- 属性:长、宽
- 方法:计算面积
area() - 方法:计算周长
perimeter()
创建对象测试。
- 定义一个
BankAccount类:
-
属性:
owner,balance -
方法:
deposit(amount)withdraw(amount)(余额不足则提示)
实例化并模拟 3 次存取款。
- 定义一个
Book类:
- 属性:书名
title、作者author - 方法:
info()输出完整信息 - 用 f-string 格式化输出
五、综合应用题(适合作业练习)
- 使用 函数 + 类 + 字符串格式化 实现一个“学生成绩管理”程序:
- 输入学生姓名和 3 门成绩
- 定义类
Student保存信息 - 自动计算平均分
- 用 f-string 输出:
姓名:...
语文:...
数学:...
英语:...
平均分:...
下面为你提供 全部 25 道课堂练习题的标准答案 + 详细讲解。
讲解简洁清晰,可直接用于课堂板书或讲义。
一、第四章:字符串格式化(答案与详解)
1. % 格式化
name = "Lily"
score = 92
print("Lily 的成绩是 %d 分" % score)
✔ %d 格式输出整数
✔ 用 % 时变量顺序必须严格匹配
2. format 总价输出
price = 12.5
num = 4
print("总价是 {:.2f} 元".format(price * num))
✔ {:.2f} 表示保留两位小数
3. f-string 圆面积
r = 3.5
area = 3.14159 * r * r
print(f"圆面积为 {area:.3f}")
✔ f-string 中直接使用变量
✔ 可以做表达式运算
4. 三种方式输出日期
year, month, day = 2025, 12, 8
print("今天是 %d 年 %d 月 %d 日" % (year, month, day))
print("今天是 {} 年 {} 月 {} 日".format(year, month, day))
print(f"今天是 {year} 年 {month} 月 {day} 日")
5. 在 f-string 中嵌入表达式
print(f"3 + 5 = {3 + 5}")
二、第八章:断言 assert(答案与讲解)
6. 年龄合法性检查
age = int(input("输入年龄:"))
assert age >= 0, "年龄不能为负"
print("年龄合法")
assert 条件, 错误信息- 条件假则报错
7. 列表不能为空
lst = []
assert len(lst) > 0, "列表不能为空"
8. 分数范围断言
def get_score(s):
assert 0 <= s <= 100, "分数必须在 0~100 之间"
return s
print(get_score(85))
三、第五章:函数(参数 + 推导式 + 递归)
(一)函数参数
9. 默认参数
def add(a, b=10):
return a + b
print(add(5)) # 15
print(add(5, 3)) # 8
10. 可变参数:*args
def total(*args):
return sum(args)
print(total(1, 2, 3)) # 6
11. 关键字参数:kwargs**
def info(name, **kwargs):
print("name:", name)
for k, v in kwargs.items():
print(k, ":", v)
info("Tom", age=18, city="Beijing")
12. 综合参数顺序
def calc(a, b, *args, **kwargs):
print("a =", a)
print("b =", b)
print("args =", args)
print("kwargs =", kwargs)
calc(1, 2, 3, 4, x=10, y=20)
✔ 参数顺序必须是:
位置参数 → *args → 默认参数 → **kwargs
(二)列表推导式
13. 平方列表
squares = [x*x for x in range(1, 11)]
14. 偶数列表
evens = [x for x in [1,2,3,4,5,6] if x % 2 == 0]
15. 所有名字变大写
names = ["Tom", "lily", "alice", "BOB"]
upper_names = [name.upper() for name in names]
16. 二维列表 3×3
matrix = [[i*3 + j for j in range(1, 4)] for i in range(3)]
print(matrix)
# [[1,2,3],[4,5,6],[7,8,9]]
(三)递归
17. 递归求 1~n 和
def sum_n(n):
if n == 1:
return 1
return n + sum_n(n - 1)
print(sum_n(5)) # 15
18. 斐波那契
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
print(fib(6)) # 8
19. 递归求最大值
def max_list(lst):
if len(lst) == 1:
return lst[0]
return max(lst[0], max_list(lst[1:]))
print(max_list([3,1,4,2,5]))
四、第六章:类
20. Person 类
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def show(self):
print(f"name: {self.name}, age: {self.age}")
p1 = Person("Tom", 18)
p2 = Person("Alice", 20)
p1.show()
p2.show()
21. Student 类 + 平均分
class Student:
def __init__(self, name, scores):
self.name = name
self.scores = scores
def avg(self):
return sum(self.scores) / len(self.scores)
stu = Student("Tom", [90, 85, 88])
print(stu.avg())
22. Rectangle 类
class Rectangle:
def __init__(self, w, h):
self.w = w
self.h = h
def area(self):
return self.w * self.h
def perimeter(self):
return 2 * (self.w + self.h)
r = Rectangle(3, 4)
print(r.area())
print(r.perimeter())
23. BankAccount(存取款)
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
print(f"存入 {amount} 元,当前余额 {self.balance}")
def withdraw(self, amount):
if amount > self.balance:
print("余额不足")
else:
self.balance -= amount
print(f"取出 {amount} 元,当前余额 {self.balance}")
acc = BankAccount("Tom", 100)
acc.deposit(50)
acc.withdraw(30)
acc.withdraw(200)
24. Book 类
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def info(self):
print(f"书名:《{self.title}》,作者:{self.author}")
b = Book("Python入门", "张三")
b.info()
五、综合应用题(学生成绩管理)
25. 综合题标准答案
class Student:
def __init__(self, name, chinese, math, english):
self.name = name
self.chinese = chinese
self.math = math
self.english = english
def avg(self):
return (self.chinese + self.math + self.english) / 3
name = input("姓名:")
c = float(input("语文:"))
m = float(input("数学:"))
e = float(input("英语:"))
stu = Student(name, c, m, e)
print(f"姓名:{stu.name}")
print(f"语文:{stu.chinese}")
print(f"数学:{stu.math}")
print(f"英语:{stu.english}")
print(f"平均分:{stu.avg():.2f}")

浙公网安备 33010602011771号