ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Python 认证 30 天备考路线:PCEP 与 PCAP 用 Practical Python 怎么练

Python 认证 30 天备考路线:PCEP 与 PCAP 用 Practical Python 怎么练

Python 认证 30 天备考路线:PCEP 与 PCAP 用 Practical Python 怎么练

【免费下载链接】practical-pythonPractical Python Programming (course by @dabeaz)项目地址: https://gitcode.com/gh_mirrors/pr/practical-python

这篇文章写给有少量编程经验、准备报考 Python 认证的人,以及零基础想先拿下 PCEP 的人。用开源项目 Practical Python 作教材,30 天讲清选级、知识点、文件练习和冲刺安排,读完后你手里是一份能直接执行的计划。

先判断你该考哪一级

备考第一步是选对级别,选错会浪费一半精力。

  • PCEP(入门级程序员):面向零基础或只写过几行代码的人。考试范围是基础语法、数据类型、控制流和简单函数,报考没有前置要求。
  • PCAP(助理级程序员):面向有 1-2 年 Python 经验、能独立写小程序并调试的人。在 PCEP 基础上增加面向对象、模块组织、异常处理和生成器。
  • 更高级的PCPP覆盖对象模型与装饰器,对Notes/07_Advanced_Topics/目录的内容还不熟的话,暂时不要报。

考试到底考什么

抛开题型,考的就是三项能力:数据操作、对象组织、函数与异常。

PCEP 基础题怎么拿稳:元组、字典、列表

  • 元组是不可变记录,解包写法name, shares, price = t是高频考点。
  • 字典按键取值;直接迭代得到键,取键值对要用items()。
  • 从文件读出的数字列全是字符串,必须先经int()、float()转换。
  • 赋值是引用绑定:两个变量名可以指向同一个列表对象。
a = [1, 2, 3] b = a # b 与 a 指向同一个列表 b.append(4) print(a) # [1, 2, 3, 4] record = ('GOOG', 100, 490.1) name, shares, price = record print(f'{shares * price:.2f}')

PCAP 面向对象部分怎么复习:类、继承与浅拷贝

  • 类是组织属性和行为的模板,__init__负责初始化实例属性。
  • 属性查找顺序:先实例,再类。
  • 继承复用父类方法,子类可覆盖同名方法。
  • 浅拷贝只复制外层容器,内层对象仍被共享,常和列表复制结合出题。
class Portfolio: def __init__(self, holdings): self.holdings = holdings def total_cost(self): return sum(s.shares * s.price for s in self.holdings)

函数与异常:PCAP 爱考的参数与 try/except

  • 可变默认参数值在多次调用间共享,是高频陷阱。
  • try/except只捕获预期的异常类型,不要写裸except:。
  • 自定义异常继承Exception,用于业务层面的错误上报。
def convert(text): try: return int(text) except ValueError: return None

拿项目文件练手 📚

项目把材料分成两部分:Notes/供阅读,Work/供编码。建议按这个顺序练:

  1. Notes/02_Working_with_data/01_Datatypes.md:先读元组与字典的区别,示例就是考试同款股票记录。
  2. Work/bounce.py:循环与递推计算,热身用。
  3. Work/pcost.py(练习 1.27):读取 Data/portfolio.csv 算总成本,练文件读取和类型转换。
  4. Work/report.py(练习 2.4):把持仓数据排成表格输出,练 f-string 格式化。
  5. Work/fileparse.py(练习 3.3):把文件读取改成通用函数,练函数设计。
  6. Notes/04_Classes_objects/01_Class.md:进入类部分,把前面的成本计算改写成类。

冲刺时间表 ⏱

第 1 周

  • 通读 Notes/01_Introduction 的 8 个小节,完成 Work/bounce.py 和 Work/mortgage.py 里的练习。
  • 读 Notes/02_Working_with_data/01_Datatypes.md,把元组和字典的每个例子在控制台逐行跑一遍。

第 2 周

  • 在 Work/pcost.py 中读取 Data/portfolio.csv 算出总成本,并和手算结果对账。
  • 改 Work/report.py 输出报表,随后读 Notes/04_Classes_objects/01_Class.md 把它重写成类版本。

考前 3 天

  • 第 1 天:把下文“高频错误”逐条在控制台复现一遍。
  • 第 2 天:重跑 Work/fileparse.py,核对解析逻辑和出错分支。
  • 第 3 天:做一套往年份选择题,只复盘错题。

高频错误 ⚠️

字符串直接参与算术错误:row[1] * row[2],两者都是 str。 后果:抛出TypeError: can't multiply sequence by non-int of type 'str'。 正确:先转换再计算:int(row[1]) * float(row[2])。

以为b = a是复制错误:b = a后修改 b,认为 a 不受影响。 后果:两者指向同一个列表,改一个等于改两个。 正确:b = a[:]或b = list(a)。

逐个修改元组错误:t[1] = 75。 后果:TypeError: 'tuple' object does not support item assignment。 正确:构造新元组替换:t = (t[0], 75, t[2])。

可变默认参数错误:def collect(items=[])。 后果:多次调用共享同一个列表,元素不断累积。 正确:def collect(items=None),在函数体内创建列表。

认证考试的题目不深,考的是你的手有没有把这些路径跑过。现在就去把 Work/pcost.py 跑起来,先让第一版算出总成本。

【免费下载链接】practical-pythonPractical Python Programming (course by @dabeaz)项目地址: https://gitcode.com/gh_mirrors/pr/practical-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进