Python 期末考试重点: 知识讲解 + 示例代码 + 讲解


第四章:字符串的格式化方法

Python 中常用的三种字符串格式化方式:


1. 百分号格式化(%)

语法

"%格式说明符" % (值)

示例

name = "Tom"
score = 95
print("姓名:%s,成绩:%d 分" % (name, score))

讲解

  • %s → 字符串
  • %d → 整数
  • %f → 浮点数(默认 6 位小数)
  • 用法接近 C 语言,适合简单场景。

2. str.format() 方法

语法

"{} {}".format(a, b)

示例

name = "Lily"
age = 18
print("姓名:{},年龄:{}".format(name, age))
print("姓名:{0},年龄:{1}".format(name, age))

讲解

  • {} 是占位符,可以带编号或变量名
  • 可读性比 % 更强。

3. f-string(推荐)

语法

f"...{变量}..."

示例

name = "Mark"
height = 1.82
print(f"{name} 的身高是 {height:.1f} 米")

讲解

  • Python 3.6+ 强烈推荐使用
  • {height:.1f} → 保留 1 位小数
  • 支持表达式:f"{3+5}"

第八章:断言的用法和功能

1. 什么是断言(assert)?

定义

assert 用来检查条件是否为真,如果为假,会抛出 AssertionError,用于调试程序。


示例 1:简单断言

x = 10
assert x > 0
print("x 是正数")

示例 2:断言失败的情况

age = -1
assert age >= 0, "年龄不能为负数"

运行会报错:

AssertionError: 年龄不能为负数

讲解

  • assert 条件, "错误提示"
  • 常用于检查函数输入是否合法
  • 在实际产品环境常关闭,但在调试时非常有用。

小练习
写一个开平方函数,要求输入必须是非负浮点数,否则断言失败并给出提示。


第五章:函数


1. 函数参数的类型(必须掌握)

(1) 位置参数

def add(a, b):
    return a + b

print(add(3, 5))

(2) 默认参数

def greet(name="Tom"):
    print("Hello", name)

greet()
greet("Alice")

(3) 可变参数:*args

def total(*nums):
    return sum(nums)

print(total(1, 2, 3, 4))

(4) 关键字可变参数:**kwargs

def show_info(**info):
    for k, v in info.items():
        print(k, ":", v)

show_info(name="Tom", age=20)

函数参数的类型(位置、默认、关键字、可变)

def demo(a, b=10, *args, **kwargs):
    """
    a      : 位置参数
    b=10   : 默认参数
    *args  : 可变位置参数(元组)
    **kwargs: 可变关键字参数(字典)
    """
    print("a=", a, "b=", b)
    print("args=", args)
    print("kwargs=", kwargs)

# 调用
demo(1)                      # a=1 b=10
demo(1, 2)                   # a=1 b=2
demo(1, 2, 3, 4)             # args=(3,4)
demo(1, 2, 3, x=5, y=6)      # args=(3,) kwargs={'x':5,'y':6}

易错点

  • 默认参数不要用可变对象(列表/字典),否则会出现“记忆”现象。
    错误示例:def add(item, lst=[]): ...
    正确写法:def add(item, lst=None): if lst is None: lst = []

2. 列表推导式(List Comprehension)(非常重要)

语法

[表达式 for 变量 in 可迭代对象 if 条件]

示例

squares = [x*x for x in range(1, 6)]
print(squares)

带条件:

evens = [x for x in range(10) if x % 2 == 0]
print(evens)

一行生成列表,比 for 循环快、可读性好。

# 需求:0~9 的平方,且只保留偶数的平方
squares = [x*x for x in range(10) if x % 2 == 0]
print(squares)          # [0, 4, 16, 36, 64]

# 嵌套:把两个列表拼接成字符串
colors = ["红", "蓝"]
sizes  = ["S", "M", "L"]
tshirts = [f"{c}-{s}" for c in colors for s in sizes]
print(tshirts)
# ['红-S', '红-M', '红-L', '蓝-S', '蓝-M', '蓝-L']

3. 会定义和调用函数(结合书例 5-1 ~ 5-4)

例 5-1:基本函数

def area(r):
    return 3.14 * r * r

print(area(3))

例 5-2:带默认值的参数

def power(x, n=2):
    return x ** n

print(power(3))     # 平方
print(power(3, 3))  # 立方

例 5-3:使用可变参数

def avg(*nums):
    return sum(nums) / len(nums)

print(avg(1, 2, 3, 4))

例 5-4:关键字参数

def introduce(name, **info):
    print("姓名:", name)
    for key, value in info.items():
        print(key, value)

introduce("Tom", age=18, city="Beijing")

4. 函数的递归调用(重点)

示例:递归求阶乘

def fact(n):
    if n == 1:
        return 1
    return n * fact(n - 1)

print(fact(5))

讲解

  • “调用自己”
  • 必须有终止条件

第六章:类(Class)


1. 定义类(例 6.1.3 – 6.1.4)

最基本的类

class Person:
    pass

2. 定义实例属性

示例

class Person:
    def __init__(self, name, age):
        self.name = name      # 实例属性
        self.age = age

p = Person("Tom", 18)
print(p.name, p.age)

3. 定义实例方法

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say(self):     # 实例方法
        print(f"我的名字是 {self.name},我今年 {self.age} 岁")

p = Person("Alice", 20)
p.say()

4. 类的更多例子(6.1.3 – 6.1.4 示意)

例:矩形类

class Rectangle:
    def __init__(self, w, h):
        self.w = w
        self.h = h

    def area(self):
        return self.w * self.h

r = Rectangle(3, 4)
print("面积:", r.area())


6.1.3 定义类、实例属性、实例方法(结合书例)

class Dog:
    # 构造方法:创建实例时自动调用
    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age  = age

    # 实例方法:第一个参数必须是 self
    def bark(self):
        print(f"{self.name} 汪汪叫!")

    def human_age(self):
        # 狗年龄转人类年龄,简易 1:7
        return self.age * 7

# 创建对象
dog1 = Dog("旺财", 3)
dog1.bark()
print(f"它相当于人类{dog1.human_age()}岁")

6.1.4 类属性与类方法(拓展,书上也讲)

class Student:
    # 类属性:所有实例共享
    school = "北京大学"

    def __init__(self, name):
        self.name = name

    # 类方法:第一个参数是 cls
    @classmethod
    def change_school(cls, new_school):
        cls.school = new_school

print(Student.school)          # 北京大学
Student.change_school("清华")
print(Student.school)          # 清华

易错点

  • 实例方法忘记写 self,运行时报 TypeError: method() takes 0 positional arguments...
  • 类名一般大写驼峰,实例小写;不要混用。

小练习
写一个 Rectangle 类:

  • 构造方法接收宽、高;
  • 提供实例方法 area() 计算面积;
  • 提供类方法 square(cls, side) 快速创建正方形实例;
  • 创建 rect1(3,4) 与 sq1(5) 并分别打印面积。

—— 总结

章节 要点 示例
字符串格式化 %、format、f-string f"{x:.2f}"
断言 assert 条件 assert age>0
函数参数 位置、默认、*args、**kwargs 四种写法示例
列表推导式 [x for x in list if ...] 生成平方数
递归 必须有终止条件 阶乘
__init__、实例属性、方法 Person、Rectangle

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