python重点内容(字符串格式化、断言、函数、列表推导式、递归、类),练习与讲解

重点内容(字符串格式化、断言、函数、列表推导式、递归、类),练习与讲解


一、第四章:字符串格式化方法(练习题)

【基础题】

  1. 使用 % 格式化输出:
    学生姓名为 "Lily",成绩为 92 分,输出:

    Lily 的成绩是 92 分
    
  2. 使用 str.format() 输出:
    一个商品单价 12.5 元,数量 4,输出总价(保留两位小数)。

  3. 使用 f-string 输出:
    半径为 3.5 的圆面积(保留 3 位小数)。


【提升题】

  1. 用三种格式化方式分别输出:

    今天是 2025 年 12 月 8 日
    
  2. 使用 f-string 在一行中输出表达式:

    3 + 5 = ?
    

二、第八章:断言 assert(练习题)

【基础题】

  1. 写一段代码,输入一个年龄 age,使用 assert 保证年龄不小于 0。

  2. 使用断言保证列表不是空列表,否则提示 "列表不能为空"


【提升题】

  1. 写一个函数 get_score(s),断言 s 在 0 到 100 之间。

三、第五章:函数(参数类型 + 列表推导式 + 递归)


(一)函数参数类型练习题

【基础题】

  1. 定义一个函数 add(a, b=10),返回两数之和,测试:

    • add(5)
    • add(5, 3)
  2. 定义一个函数 total(*args),返回所有参数的和。

  3. 定义一个函数 info(name, **kwargs),打印:

name: ...
key1: value1
key2: value2

【提升题】

  1. 编写函数 calc(a, b, *args, **kwargs),分别打印参数内容,理解各种参数的顺序。

(二)列表推导式练习题

【基础题】

  1. 用列表推导式生成 1 到 10 的平方列表。

  2. 用列表推导式从列表 [1,2,3,4,5,6] 中取出所有偶数。

  3. 给出列表 names = ["Tom", "lily", "alice", "BOB"]
    使用列表推导式生成所有名字的大写形式。


【提升题】

  1. 用列表推导式生成一个 3×3 的二维列表:
[[1,2,3],[4,5,6],[7,8,9]]

(三)递归调用练习题

【基础题】

  1. 写一个递归函数 sum_n(n),返回 1 + 2 + ... + n。

  2. 写一个递归函数计算斐波那契数列:

f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2)

【提升题】

  1. 用递归求一个列表的最大值:
max_list([3,1,4,2,5])

四、第六章:类 Class 练习题


(一)定义类与实例属性

【基础题】

  1. 定义一个类 Person
  • 属性:name, age
  • 方法:show() 输出 "name:..., age:..."
    创建两个对象测试。

(二)实例方法

  1. 定义一个 Student 类:
  • 属性:name, scores(列表)
  • 方法:avg() 返回平均分
    实例化一个学生并求平均分。

(三)综合提升题

  1. 定义一个 Rectangle 类:
  • 属性:长、宽
  • 方法:计算面积 area()
  • 方法:计算周长 perimeter()
    创建对象测试。

  1. 定义一个 BankAccount 类:
  • 属性:owner, balance

  • 方法:

    • deposit(amount)
    • withdraw(amount)(余额不足则提示)
      实例化并模拟 3 次存取款。

  1. 定义一个 Book 类:
  • 属性:书名 title、作者 author
  • 方法:info() 输出完整信息
  • 用 f-string 格式化输出

五、综合应用题(适合作业练习)

  1. 使用 函数 + 类 + 字符串格式化 实现一个“学生成绩管理”程序:
  • 输入学生姓名和 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}")

posted @ 2025-12-09 19:16  kkman2000  阅读(1)  评论(0)    收藏  举报