当前位置: 首页 > news >正文

python考点讲解- TYUT

给出“是什么→为什么→怎么用→易错点→小练习”的完整讲解,每个知识点都配上可直接运行的 Python 代码与中文注释。


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

  1. % 老式格式化(了解即可,维护老代码会遇到)
  2. str.format() 新式格式化(Python 3.0+)
  3. f-string 字符串插值(Python 3.6+,官方最推荐:快、可读、支持任意表达式)

核心记忆口诀:
“百分号老,format 新,f-string 最香最贴心。”

---------------- 代码示例 ----------------

name = "小千"
age  = 18
score = 92.857# 1. % 方式
s1 = "姓名:%s,年龄:%d,成绩:%.1f" % (name, age, score)
print("1.% 方式 ->", s1)# 2. str.format()
s2 = "姓名:{0},年龄:{1},成绩:{2:.1f}".format(name, age, score)
print("2.format ->", s2)# 3. f-string(推荐)
s3 = f"姓名:{name},年龄:{age},成绩:{score:.1f}"
print("3.f-string->", s3)# f-string 里可以写任意表达式
import math
print(f"明年{age+1}岁,π取两位={math.pi:.2f}")

易错点

  • 混用中英文引号、花括号未配对。
  • 在 f-string 里写反斜杠 \ 时要双反斜杠 \\,或者直接用 raw-string rf"..."

小练习
把当前系统时间格式化成 2025-12-09 14:30:05 的形式并打印。
(提示:from datetime import datetimedatetime.now()f"{now:%Y-%m-%d %H:%M:%S}"


第八章 断言的用法和功能

断言 = 防御式编程的“守门员”。
语法:
assert 条件 [, 报错信息]
条件为假时立即抛 AssertionError,程序崩溃——越早发现 bug 越好。

---------------- 代码示例 ----------------

def divide(a, b):# 守卫:除数不能为 0assert b != 0, "除数不能为 0"return a / bprint(divide(10, 2))   # 正常
# divide(10, 0)        # 打开注释会报错:AssertionError: 除数不能为 0

生产环境关闭断言(提速):
python -O demo.py # -O 会忽略所有 assert,相当于 C 的 #define NDEBUG

易错点

  • 把 assert 当 if 用:assert 只用于“绝不应该发生”的场景,不能替代业务分支。
  • 在 assert 里写副作用,如 assert lst.pop()==3;一旦 -O 开关关闭,这句就消失,逻辑会出错。

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


第五章 函数

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

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 = []

5.2 列表推导式(List Comprehension)

一行生成列表,比 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']

5.3 定义与调用函数(结合书例 5-1~5-4)

例 5-1 最简函数

def welcome():print("Hello, Python!")welcome()

例 5-2 带返回值

def add(a, b):return a + bresult = add(3, 4)
print("3+4=", result)

例 5-3 默认参数

def power(x, n=2):return x ** nprint(power(5))    # 25
print(power(5, 3)) # 125

例 5-4 多个返回值(实质是返回元组)

def div_mod(a, b):return a // b, a % bq, r = div_mod(17, 5)
print("商=", q, "余=", r)

5.4 递归调用(PPT 常见例子:阶乘、斐波那契、汉诺塔)

阶乘:

def factorial(n):if n == 0 or n == 1:return 1return n * factorial(n - 1)print(factorial(5))  # 120

递归三要素:

  1. 基准条件(退出条件)
  2. 向基准靠近(n-1)
  3. 自己调用自己

易错点

  • 忘记写基准条件 → 无限递归爆栈 RecursionError: maximum recursion depth exceeded
  • Python 默认递归深度 1000,可用 sys.setrecursionlimit() 提高,但别滥用。

小练习
用递归实现“列表求和”,如 recursive_sum([1,2,3])==6,不准用内置 sum()


第六章 类

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

class Dog:# 构造方法:创建实例时自动调用def __init__(self, name, age):# 实例属性self.name = nameself.age  = age# 实例方法:第一个参数必须是 selfdef bark(self):print(f"{self.name} 汪汪叫!")def human_age(self):# 狗年龄转人类年龄,简易 1:7return 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@classmethoddef change_school(cls, new_school):cls.school = new_schoolprint(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) 并分别打印面积。
http://www.jsqmd.com/news/69222/

相关文章:

  • 2025年口碑好的平开不锈钢合页/钢质门不锈钢合页TOP实力厂家推荐榜
  • 2025年专业定制触摸一体机最新TOP厂家排名
  • Ganache-CLI以太坊私网JSON-RPC接口大全:从入门到精通 - 指南
  • 2025年口碑好的高压SVG动态无功补偿装置/高压无功补偿装置厂家实力及用户口碑排行榜
  • 02 音视频开发--Windows环境搭建FFmpeg+Qt+Visual studio 2022
  • #题解#洛谷P1045 麦森数#快速幂#高精度乘法#
  • 2025年口碑好的全屋定制衣柜灯厂家最新实力排行
  • MySQL主从之间具有不同数据类型的列的复制
  • 计算机硬件基础知识 - Invinc
  • 自建机场
  • 2025实用AI洗头机品牌推荐榜:仪美天引领智能洗护,各大品牌各展所长
  • 一类通过寻找区间关键点从而弱化子区间的限制而优化复杂度的问题
  • 告别盲目选型:2025 MES管理系统综合测评(价格、功能、实操性)
  • 2025年评价高的耐高温钛杯/大冰花钛杯行业内口碑厂家排行榜
  • 2025 雅思报班不踩雷!高口碑机构红榜 + 3 类考生适配指南
  • 2025年口碑好的opp束带行业内知名厂家排行榜
  • 102302124_严涛_第四次作业
  • 02 对象及数字对象
  • 雅思培训机构怎么选?2025年这5家高性价比机构值得关注
  • kettle9.0 多库多表同步数据
  • 从意义行为原生到技术实现:现实情境编译器作为AI元人文的范式革命
  • 2025年口碑好的双胞胎婴儿车国货
  • 2025雅思培训机构高分逆袭指南:精准推荐+避坑选课全攻略
  • vue-dawn-flow 低代码流程插件
  • 百日挑战——单词篇(第二十天) - 指南
  • Webpack与Vite的常用设置及主要差异分析
  • 洛谷U639786 树的颜色询问 题解 树上启发式合并(dsu on tree)
  • 2025年热门的牛羊肉贴体膜/贴体膜厂家最新实力排行
  • 2025 年雅思培训口碑机构 TOP5 推荐
  • 灵光网页版AI助手,特斯拉集成Grok语音导航,阿里Qwen3-TTS横空出世