正在读取本机记录…

PYTHON · 从脚本到作品

Python 岗位实战

围绕 AI 产品工作,练习读懂代码、处理数据、调用接口和自动化,把技能要求变成可演示的作品。

如何加入现有学习计划

先完成 01–03 的编程基础,再结合全栈接口知识学习 04–06,最后用 07–08 为 AI 评测项目补齐代码与测试证据。可按每周两节安排四周;这是学习节奏建议,按实际练习情况调整。

每次先读示例、在本机运行并修改,再记录结果。页面展示代码与保存笔记,不在浏览器执行 Python。安装 Python 3 后,使用第 01 节虚拟环境中的解释器运行各节脚本。

进阶方向:完成基础后,按目标岗位补充 pandas 数据分析、SQL 联合分析或 Python Web API 开发。

正在读取学习记录…。测验正确且实践记录至少 80 字才计入;不代表能力认证。

01 环境与第一个脚本

学习目标:能独立运行并修改 Python 程序。

解释器负责执行代码,编辑器负责写代码。先确认 Python 3 可用,再建立项目自己的虚拟环境。

以下命令在项目目录的终端逐行执行。Windows 使用 py;macOS / Linux 可用 python3,虚拟环境解释器路径改为 .venv/bin/python。无需激活环境也可运行。

py --version
py -m venv .venv
# 将 print("我的第一个 Python 项目") 保存为 hello.py
.venv\Scripts\python hello.py

Python 官方延伸阅读 ↗

动手任务

创建 hello.py,输出学习目标。记录 Python 版本、运行命令与输出;故意拼错 print,阅读报错行号后修复。不要把 .venv 提交到 Git。

如何确认脚本使用了项目的虚拟环境?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

02 变量、判断与循环

学习目标:把业务规则转换成可读的程序。

字符串表示文本,数字用于计算,布尔值表示条件。缩进定义代码块;不要混用 Tab 和空格。

for 遍历数据,if 按条件分支。先用小样本手算结果,再检查脚本是否一致。

scores = [60, 85, 59]
passed = 0
for score in scores:
    if score >= 60:
        passed += 1
print(passed)  # 2

Python 官方延伸阅读 ↗

动手任务

写一个分数统计脚本,输出通过数和总数。分别输入空列表、恰好 60 分和全部未通过的数据,记录预期与实际结果。

及格规则是大于等于 60,最应补哪条边界用例?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

03 数据结构、函数与异常

学习目标:整理业务数据并写出可复用逻辑。

列表保存序列,字典保存字段,集合可用于去重。重复值是否应合并,要先明确业务主键。

函数用参数接收输入、return 返回结果。缺失字段与错误类型应明确处理,不要用宽泛异常捕获后假装成功。

def pass_rate(results):
    if not results:
        return None
    if any(type(value) is not bool for value in results):
        raise ValueError("每项必须是布尔值")
    return sum(results) / len(results)

print(pass_rate([True, False, True]))

Python 官方延伸阅读 ↗

动手任务

运行 pass_rate,加入空列表、全为 False、字符串 "False" 三种输入。说明 None 与 0 的区别,记录异常如何定位和修复。

没有任何评测样本时,通过率应该怎样表示?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

04 CSV、JSON 与数据清洗

学习目标:把原始数据整理成可检查的结果。

CSV 用于表格交换,JSON 表达结构化数据。读取时明确编码;用标准库解析,避免自己按逗号拆行。

先检查字段、空值、重复标识与数据类型。保留原始输入,输出清洗前后行数及剔除原因;数量不一致时能够追溯。

import csv
import io
import json

source = io.StringIO("id,result\n1,pass\n2,fail\n")
rows = list(csv.DictReader(source))
print(json.dumps(rows, ensure_ascii=False, indent=2))

Python 官方延伸阅读 ↗

动手任务

先运行内存示例,再改为用 open("cases.csv", encoding="utf-8-sig", newline="") 读取本地 CSV。加入重复 ID、空结果、含逗号的引号字段,输出有效数据和异常清单;不得覆盖原文件。熟悉后再扩展到 pandas 分组统计。

发现结果字段为空,最合适的处理是什么?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

05 HTTP API 与结果校验

学习目标:读懂接口输入输出,区分网络成功与业务成功。

接口调用要明确方法、地址、请求体、状态码与超时。凭据从环境变量读取,不写入源码或学习记录。

先用固定响应练习解析。接入你有权限的真实接口时,再增加超时、HTTP 错误和 JSON 解析错误处理;写操作不能盲目重试。

import json

payload = json.loads('{"status": "ok", "items": []}')
if payload.get("status") != "ok":
    raise ValueError("业务未成功")
if not isinstance(payload.get("items"), list):
    raise ValueError("items 必须是列表")
print(len(payload["items"]))

Python 官方延伸阅读 ↗

动手任务

运行固定响应示例,再分别替换为非法 JSON、status=error 和 items=null。随后用 urllib.request.urlopen(url, timeout=10) 访问你有权限的只读测试接口,记录状态码与字段校验结果;没有接口时明确记录真实网络部分尚未验证。

HTTP 200 且能解析 JSON,是否说明任务完成?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

06 文件自动化与可重复运行

学习目标:用脚本减少重复操作,并能解释每次执行结果。

pathlib 处理文件路径,按明确范围枚举文件。先预览操作清单,再实现写入;不把整台电脑当输入目录。

自动化要考虑重复执行、部分失败和输出覆盖。把输入、输出和日志分开,记录处理数与失败原因。

from pathlib import Path

folder = Path("input")
if not folder.is_dir():
    raise FileNotFoundError("请先创建 input 文件夹并放入练习 CSV")
for path in sorted(folder.glob("*.csv")):
    print("待处理:", path.name)  # 只预览,不修改文件

Python 官方延伸阅读 ↗

动手任务

创建 input 目录和两份练习 CSV,先预览,再实现批量统计到独立 output 目录。连续运行两次,验证不重复累计;增加损坏文件,记录失败且保留原始文件。

批处理第二次运行前应优先检查什么?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

07 用 Python 整理 AI 评测

学习目标:为已有 AI 评测实践补上可复现的数据分析。

先明确成功准则、样本来源和版本,再批量整理结果。不要把模型自己的判断直接当正确答案。

失败、超时与无法判断应单独记录。演示数据只能验证计算逻辑,不能证明真实模型效果。

cases = [{"id": "a", "result": "pass"},
         {"id": "b", "result": "fail"},
         {"id": "c", "result": "unknown"}]
counts = {name: 0 for name in ("pass", "fail", "unknown")}
for case in cases:
    counts[case["result"]] += 1
print(counts)
print("样本数:", len(cases))

Python 官方延伸阅读 ↗

动手任务

把至少 10 条人工构造的评测样本保存成 JSON,校验唯一 ID 和允许的结果值,输出各类数量、分母与失败清单。到 AI 评测工作台用相同样本核对结果,再说明样本局限。

脚本在 10 条演示样本上全通过,可以得出什么结论?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。

08 测试、交付与面试讲解

学习目标:用可运行作品说明 Python 能力。

把数据读取、校验、统计和输出拆成函数。测试覆盖正常输入、空输入、坏数据和重复运行。

交付源码、示例数据、运行说明、测试结果和限制。面试时能解释一段代码并现场修改,比只列工具名称更有说服力。

import unittest
from metrics import pass_rate

class RateTests(unittest.TestCase):
    def test_empty(self):
        self.assertIsNone(pass_rate([]))

    def test_mixed(self):
        self.assertEqual(pass_rate([True, False]), 0.5)

    def test_invalid(self):
        with self.assertRaises(ValueError):
            pass_rate(["False"])

if __name__ == "__main__":
    unittest.main()

Python 官方延伸阅读 ↗

动手任务

将第 03 节函数保存为 metrics.py,本节代码保存为 test_metrics.py,执行 python -m unittest。完成一个“评测数据质检与报告生成器”:提交源码、匿名样本、README、异常清单和测试证据;用 3 分钟讲清业务问题、输入输出、失败处理与尚未验证部分。

什么更能支持“熟悉 Python”的求职描述?

0 / 至少 80 字 · 保存状态见页面顶部,记录随学习备份保存。