跳到主内容
Zhimalab
Python 21天快速入门
正在启动 Python 运行环境…
首页 课程概览

Python 21天快速入门

欢迎来到 Python 21天快速入门!本教程假设你已有一定编程基础(如学过 C 或 Java),因此会跳过「什么是变量」之类的概念,直接聚焦 Python 的独特之处。

21 天,从基础语法到面向对象、生成器、综合实战。每课都有可运行代码(基于 Pyodide,浏览器端直接跑 Python)和动手练习

使用方法:左侧侧边栏选择课程,每课包含讲解、代码示例(可编辑运行)和练习题。完成后点击「标记完成」记录进度。
入门 Day 1 / 21 · 第一周 · 基础语法

你好,Python

欢迎来到 Python 21天快速入门!本教程假设你已有一定编程基础(如学过 C 或 Java),因此会跳过「什么是变量」之类的概念,直接聚焦 Python 的独特之处。
Python 以简洁著称。经典的第一行代码只需要一个 print()。点击下方代码块的「运行」按钮试试:
hello.py
Ctrl+Enter 运行
Python 不需要 main() 函数,不需要分号,不需要头文件——直接写,直接跑。变量也不需要声明类型,赋值即创建:
变量与类型
Ctrl+Enter 运行
关键点:Python 是动态类型语言——变量类型在运行时确定,且可以随时改变。type() 函数可以查看任何变量的类型。
input() 可以读取用户输入(返回字符串),f-string(格式化字符串)是 Python 3.6+ 最推荐的字符串拼接方式:
f-string 入门
Ctrl+Enter 运行
练习题
创建变量 city 赋值为 "北京",变量 temp 赋值为 26,然后用 f-string 打印:北京今天的气温是 26 度
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
基础 Day 2 / 21 · 第1周

数字与字符串

Python 有三种数字类型:int(整数,无大小限制)、float(浮点数)、complex(复数)。算术运算符和 C 类似,但 / 永远返回浮点数,// 是整除。
数字运算
Ctrl+Enter 运行
字符串
字符串可以用单引号、双引号或三引号。三引号可以跨行。字符串支持 * 重复和 + 拼接,但 f-string 更优雅。
字符串操作
Ctrl+Enter 运行
切片是 Python 的核心特性。s[start:stop:step] 左闭右开。s[::-1] 反转字符串是最经典的 Python 技巧。
练习题
给定字符串 s = "Hello, Python!",用切片提取出 "Python" 并打印。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
基础 Day 3 / 21 · 第1周

布尔值与运算符

Python 的布尔值是 TrueFalse(首字母大写)。比较运算符:== != < > <= >=。逻辑运算符是英文单词 andornot,不是 && || !
布尔与运算
Ctrl+Enter 运行
truthiness(真值测试):以下值都为「假」:00.0""[]{}None。其他一切为「真」。
真值测试
Ctrl+Enter 运行
is vs ==is 判断是否同一个对象(内存地址),== 判断值是否相等。判断值用 ==
练习题
写一个函数 is_leap_year(year),判断给定年份是否为闰年。规则:能被 4 整除但不能被 100 整除,或能被 400 整除。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
基础 Day 4 / 21 · 第1周

条件分支

Python 用 if / elif / else 实现条件分支。没有 switch-case(3.10+ 有 match-case)。特别注意:Python 用缩进表示代码块,缩进错误会直接报错。
if/elif/else
Ctrl+Enter 运行
条件表达式(三元运算符)值1 if 条件 else 值2,相当于 C 的 条件 ? 值1 : 值2
三元表达式与 match
Ctrl+Enter 运行
缩进规则:统一用 4 个空格(PEP 8 标准)。pass 是空操作占位符,用在还没写实现的地方。
练习题
写一个函数 classify(num),返回 "正"、"负" 或 "零"。然后用 5、-3、0 分别测试。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
基础 Day 5 / 21 · 第1周

while 循环

while 循环和 C 类似,但 Python 没有 do-whilebreak 跳出循环,continue 跳过本次。else 可以跟在循环后面——循环正常结束(非 break)时执行。
while 循环
Ctrl+Enter 运行
while-else
Ctrl+Enter 运行
while-else 是 Python 的特色:else 块在循环没有被 break 跳出时执行。适合「搜索」场景——找到就 break,没找到就执行 else。
练习题
用 while 循环计算 2^10(不使用 ** 运算符),把结果存入变量 result 并打印。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
基础 Day 6 / 21 · 第1周

for 循环与 range

Python 的 for 不是 C 的 for(init;cond;inc),而是for-in 遍历——直接迭代可迭代对象的每个元素。range() 生成整数序列。
for 循环
Ctrl+Enter 运行
zip 与嵌套循环
Ctrl+Enter 运行
Python 没有 C 风格的 for 循环。需要索引时用 range();需要索引+值用 enumerate();并行遍历用 zip()
练习题
用 for 循环和 range() 打印九九乘法表的第 5 行:1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
基础 Day 7 / 21 · 第1周

列表基础

列表(list)是 Python 最常用的数据结构——可变、有序、可存任意类型。相当于 C 的数组 + 链表的结合体,但更灵活。
列表操作
Ctrl+Enter 运行
列表排序
Ctrl+Enter 运行
sorted() vs .sort()sorted() 返回新列表,不改原列表;.sort() 原地排序,返回 None
练习题
给定列表 nums = [5, 3, 8, 1, 9, 2, 7],用 sorted() 对其降序排序,存入变量 result 并打印。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 8 / 21 · 第二周 · 数据结构与函数

列表推导式

列表推导式(List Comprehension)是 Python 最优雅的特性之一——用一行代码创建列表。对于有 C/Java 背景的人来说,这是「Pythonic」思维的第一课。
列表推导式
Ctrl+Enter 运行
嵌套与字典推导式
Ctrl+Enter 运行
推导式语法:[表达式 for 变量 in 可迭代对象 if 条件]。超过两行就该用普通循环。
练习题
用列表推导式生成 1 到 20 中所有偶数的平方,结果应为 [4, 16, 36, 64, 100, 144, 196, 256, 324, 400]。存入变量 result
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 9 / 21 · 第2周

元组与解包

元组(tuple)是不可变列表。一旦创建,不能增删改。它的用途:固定数据(如坐标)、函数多返回值、字典键(列表不能做键)。
元组与解包
Ctrl+Enter 运行
多返回值
Ctrl+Enter 运行
何时用元组 vs 列表?数据不会被修改时用元组(更安全、更快、可哈希)。需要增删改时用列表。
练习题
用元组解包,一步交换变量 a(值为 100)和 b(值为 200)的值,使 a=200, b=100。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 10 / 21 · 第2周

字典

字典(dict)是 Python 最强大的数据结构——键值对映射,O(1) 查找。Python 3.7+ 保证插入顺序。键必须是不可变类型(str, int, tuple),列表和字典不能做键。
字典操作
Ctrl+Enter 运行
字典推导式与词频统计
Ctrl+Enter 运行
dict.get(key, default) 是安全访问字典的利器——键不存在时返回 default 而不是报错。
练习题
给定字符串 text = "apple banana apple cherry banana apple",统计每个单词出现的次数,存入字典 freq。预期:{'apple': 3, 'banana': 2, 'cherry': 1}
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 11 / 21 · 第2周

集合

集合(set)是无序、不重复的元素集合。核心用途:去重集合运算(并、交、差、对称差)。查找速度 O(1),和字典一样快。
集合操作
Ctrl+Enter 运行
集合应用
Ctrl+Enter 运行
集合运算符:| 并集、& 交集、- 差集、^ 对称差。比调用方法更简洁。
练习题
给定两个列表 a = [1, 2, 3, 4, 5]b = [4, 5, 6, 7, 8],用集合运算找出它们的共同元素,存入变量 common
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 12 / 21 · 第2周

函数基础

Python 用 def 定义函数。和 C/Java 不同:参数可以设默认值、按名称传递、接受可变数量的参数。函数是一等对象——可以赋值给变量、作为参数传递。
函数定义
Ctrl+Enter 运行
可变参数
Ctrl+Enter 运行
*args 收集多余的位置参数为元组,**kwargs 收集多余的关键字参数为字典。参数顺序:def f(必选, 默认, *args, **kwargs)
练习题
写一个函数 power(base, exp=2),计算 baseexp 次方。exp 默认为 2(即平方)。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 13 / 21 · 第2周

Lambda 与高阶函数

lambda 是匿名函数——一行定义,适合简单的临时函数。map()filter()sorted() 等高阶函数常配合 lambda 使用。不过列表推导式往往比 map/filter 更 Pythonic。
lambda 表达式
Ctrl+Enter 运行
map / filter / reduce
Ctrl+Enter 运行
Pythonic 建议:简单操作用列表推导式代替 map/filter,可读性更好。lambda 只用于简短的一行函数。
练习题
给定列表 words = ["banana", "apple", "cherry", "date"],用 sorted()lambda 按字符串长度排序,存入变量 result
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
进阶 Day 14 / 21 · 第2周

字符串进阶

Python 字符串方法非常丰富。字符串是不可变的——所有「修改」操作都返回新字符串。
字符串方法
Ctrl+Enter 运行
字符串格式化
Ctrl+Enter 运行
练习题
给定字符串 s = "hello world python",将每个单词首字母大写,结果为 "Hello World Python"。存入变量 result
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
高级 Day 15 / 21 · 第三周 · 进阶与实战

文件操作

文件操作用 open() 函数。务必用 with 语句——自动关闭文件,即使出错也不会泄漏资源。模式:'r' 读、'w' 写(覆盖)、'a' 追加。
文件读写
Ctrl+Enter 运行
with 语句是上下文管理器,等价于 try-finally 但更简洁。with open(...) as f: 会在代码块结束时自动调用 f.close(),即使发生异常也不会遗漏。
JSON 读写
Ctrl+Enter 运行
练习题
将字符串 "Python 是最好的语言" 写入文件 /tmp/quote.txt,然后再读取出来存入变量 content 并打印。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
高级 Day 16 / 21 · 第3周

异常处理

Python 用 try/except/else/finally 处理异常。except 可以指定异常类型。不要用 except: 裸捕获——会隐藏 bug。
try/except/else/finally
Ctrl+Enter 运行
raise 与自定义异常
Ctrl+Enter 运行
异常处理原则:① 只捕获你预期的异常 ② 捕获后要处理,不要 pass 掉 ③ else 块放「正常逻辑」 ④ finally 用于资源清理
练习题
写一个函数 safe_divide(a, b),返回 a / b 的结果。如果 b 为 0,返回字符串 "错误:除以零"(不抛异常)。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
高级 Day 17 / 21 · 第3周

类与对象

Python 是面向对象语言,但不像 Java 那样强制一切皆类。class 定义类,__init__ 是构造函数,self 相当于 Java 的 this实例方法的第一个参数永远是 self
类定义
Ctrl+Enter 运行
__str__ vs __repr__:__str__ 面向用户(print 时调用),__repr__ 面向开发者(交互式环境调用)。
类方法、静态方法、属性
Ctrl+Enter 运行
练习题
定义一个 Circle 类,有 radius 属性。方法 area() 返回面积(πr²),方法 perimeter() 返回周长(2πr)。使用 math.pi
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
高级 Day 18 / 21 · 第3周

继承与魔法方法

Python 支持单继承和多继承。super() 调用父类方法。魔法方法(dunder methods)以双下划线开头和结尾,定义对象的行为——运算符重载、迭代、比较等。
继承与多态
Ctrl+Enter 运行
运算符重载
Ctrl+Enter 运行
常用魔法方法:__eq__(==)、__add__(+)、__len__(len())、__getitem__([])、__iter__(for 循环)。
练习题
定义一个 Book 类,有 titleauthor 属性。实现 __str__ 返回 "《title》by author"__eq__ 判断两本书的 title 和 author 是否都相同。
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
高级 Day 19 / 21 · 第3周

模块与标准库

Python 标准库极其丰富——「内置电池」(batteries included)。import 导入模块,from ... import ... 导入特定对象。每个 .py 文件就是一个模块。
标准库
Ctrl+Enter 运行
collections 与 itertools
Ctrl+Enter 运行
导入方式:import mod(用 mod.func() 调用)、from mod import func(直接 func())、import mod as m(别名)。
练习题
random 模块生成 5 个 1-100 之间的不重复随机整数,存入列表 numbers 并打印。使用 random.sample()
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
高级 Day 20 / 21 · 第3周

迭代器与生成器

生成器(Generator)是 Python 的核心特性——惰性求值,不一次性生成所有数据,而是按需 yield。处理大数据流时,生成器能节省海量内存。
生成器
Ctrl+Enter 运行
生成器进阶
Ctrl+Enter 运行
yield vs return:return 返回后函数结束;yield 返回后函数「暂停」,下次 next() 时从暂停处继续。
练习题
写一个生成器函数 even_stream(),无限生成偶数序列:0, 2, 4, 6, 8, ... 用 islice 取前 5 个存入列表 result
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
实战 Day 21 / 21 · 第3周

综合实战:学生管理系统

最后一天,把前面学的全部串起来——类、列表、字典、文件 I/O、异常处理——做一个学生成绩管理系统。这是典型的 Python 小项目。
系统需求:① 添加学生(姓名、年龄、成绩)② 查询所有学生 ③ 按成绩排序 ④ 统计平均分和最高分 ⑤ 保存到 JSON 文件。
学生管理系统
Ctrl+Enter 运行
恭喜你完成了 21 天 Python 之旅!你已经掌握了 Python 的核心语法、数据结构、函数、OOP、文件操作、异常处理和生成器。接下来可以探索:Web 开发(Django/Flask)、数据分析(Pandas/NumPy)、自动化脚本、机器学习等方向。
练习题
使用上面的 StudentManager 类,创建管理器,添加 3 个学生(张三 90 分、李四 85 分、王五 95 分),然后调用 stats() 方法获取统计信息,存入变量 info
你的代码
仔细阅读上面的讲解,然后动手尝试。如果还是卡住,试着先把代码拆成更小的步骤。
🎉

恭喜完成全部课程!

你已经掌握了 Python 的核心知识,继续探索更广阔的编程世界吧!