小白学 Python
AI 编程指南GitHub
© 2026 小白学 Python · 基于 walter201230/Python 教程
课程目录关于本站联系方式隐私政策GitHub

条件与循环

完整讲解 · 7 段教学·配 7 道练习题·预计 35 分钟

本页是本章的通读版,可直接读完全部讲解。想动手写代码、跑判分,去 闯关模式。

教学 01 / 07

第四节:条件与循环

前面学的都是「数据怎么存」,这一节学「程序怎么走」——

  • 条件语句(if / elif / else):根据情况走不同分支
  • 循环语句(for / while):让计算机帮你重复跑
  • Python 3.10+ 的 match / case:结构化模式匹配——比一长串 elif 优雅得多
教学 02 / 07

一、条件语句

1、if / else 的基本形式

Python 中,if 语句的基本形式如下:

python到闯关页运行这段 →
if 判断条件:
    执行语句……
else:
    执行语句……

⚠️ 别忘了冒号 : 和缩进——Python 没有大括号 {},靠缩进来表示「这一段属于 if 的代码块」。

if 语句的判断条件可以用 >(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

例子:

python到闯关页运行这段 →
results = 59

if results >= 60:
    print('及格')
else:
    print('不及格')

输出:

不及格

「真假」判断的隐式规则

Python 程序语言指定任何非 0 和非空(null)值为 True,0 或者 null 为 False。

python到闯关页运行这段 →
num = 6
if num:
    print('Hello Python')

输出:

Hello Python

如果换成空字符串:

python到闯关页运行这段 →
num = ''
if num:
    print('Hello Python')

什么都不会打印——空字符串被当作 False,条件不成立。

可以这样总结「假值」(其它都是真值):

类型假值
数字0、0.0
字符串''
容器[]、()、{}、set()
特殊None、False
练习 1 / 7if / else:判断及格去闯关页做这题 →
教学 03 / 07

2、if 多分支:elif

有些时候判断不止两个分支,比如成绩既要分及格不及格,还要细分优秀、良好。

这时候用 elif:

python到闯关页运行这段 →
if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……

例子:

python到闯关页运行这段 →
results = 89

if results > 90:
    print('优秀')
elif results > 80:
    print('良好')
elif results > 60:
    print('及格')
else:
    print('不及格')

输出:

良好

3、多个条件同时判断:and / or

要求 java 和 python 两科都 > 80 才算优秀,怎么写?

用 and(与) 和 or(或):

  • or 表示两个条件有一个成立就 True
  • and 表示两个都成立才 True
python到闯关页运行这段 →
java = 86
python = 68

if java > 80 and python > 80:
    print('优秀')
else:
    print('不优秀')

if (java >= 80 and java < 90) or (python >= 80 and python < 90):
    print('良好')

输出:

不优秀
良好

💡 复杂条件用括号 () 把要先算的部分括起来,可读性最重要。

练习 2 / 7elif:成绩等级去闯关页做这题 →练习 3 / 7and / or:联合条件去闯关页做这题 →
教学 04 / 07

4、Python 3.10+ 的 match / case

各位童鞋,如果你用的是 Python 3.10 或者更新的版本,那么除了 if / elif / else 之外,还多了一个更直观的家伙—— match / case,叫做「结构化模式匹配」(structural pattern matching)。

我们先看一个需求,假设水哥想根据后台返回的「指令字符串」做不同的事情:

python到闯关页运行这段 →
command = 'start'

if command == 'start':
    print('启动')
elif command == 'stop':
    print('停止')
elif command == 'pause':
    print('暂停')
else:
    print('未知指令')

这样写没毛病,但是当分支多起来,一长串 elif 就显得啰嗦。我们用 match / case 重写:

python到闯关页运行这段 →
command = 'start'

match command:
    case 'start':
        print('启动')
    case 'stop':
        print('停止')
    case 'pause':
        print('暂停')
    case _:
        print('未知指令')

case _ 就是兜底分支,相当于 else,下划线 _ 是个通配符。

match / case 真正的厉害之处:匹配「结构」

它不只是值比较——还能匹配数据的「形状」并把变量解包出来:

python到闯关页运行这段 →
point = [10, 20]

match point:
    case [0, 0]:
        print('原点')
    case [x, 0]:
        print(f'在 x 轴上,x = {x}')
    case [0, y]:
        print(f'在 y 轴上,y = {y}')
    case [x, y]:
        print(f'普通点,x = {x},y = {y}')
    case _:
        print('不是二维坐标')

输出:

普通点,x = 10,y = 20

也能匹配 dict:

python到闯关页运行这段 →
response = {'status': 'ok', 'data': [1, 2, 3]}

match response:
    case {'status': 'ok', 'data': data}:
        print(f'成功,拿到数据 {data}')
    case {'status': 'error', 'message': msg}:
        print(f'失败:{msg}')
    case _:
        print('未知响应')

💡 match / case 不是用来取代 if / elif。简单的值比较,写 if 反而更清楚;只有当你要根据「数据的结构」来分发逻辑时(如解析 JSON / 处理 AST),它才能真正发挥威力。

练习 4 / 7match / case:处理指令去闯关页做这题 →
教学 05 / 07

二、循环语句

1、for 循环

for 循环的基本语法:

python到闯关页运行这段 →
for 变量 in 可迭代对象:
    循环体

可迭代对象就是「可以一个一个拿出来」的东西——字符串、list、tuple、dict、set 都可以。

例子:

python到闯关页运行这段 →
for letter in 'Hello':
    print(letter)

输出:

H
e
l
l
o

遍历 dict 默认拿到的是 key:

python到闯关页运行这段 →
d = {'一点水': '小学生', '两点水': '初中生'}

for k in d:
    print(k)

输出:

一点水
两点水

2、range() 函数:生成一段整数序列

python到闯关页运行这段 →
for i in range(3):
    print(i)

输出:

0
1
2

range(x) 生成 0 到 x-1 的整数序列(左闭右开)。

range(a, b) 生成 a 到 b-1:

python到闯关页运行这段 →
for i in range(2, 5):
    print(i)
# 2 3 4

range(a, b, step) 加上步长:

python到闯关页运行这段 →
for i in range(0, 10, 2):
    print(i)
# 0 2 4 6 8
练习 5 / 7for + range:求和去闯关页做这题 →
教学 06 / 07

3、while 循环

while 循环就是「条件为真时一直跑」:

python到闯关页运行这段 →
while 条件:
    循环体

经典例子——计算 1 到 100 所有整数的和:

python到闯关页运行这段 →
count = 1
total = 0

while count <= 100:
    total = total + count
    count = count + 1

print(total)

输出:

5050

for 和 while 怎么选?

  • for:迭代「已知集合」的情况——遍历 list/dict/range,按部就班
  • while:「条件还没达成就一直做」的情况——比如等用户输入、读完文件、算到某个值

简单的「跑 N 次」用 for + range;条件型的循环用 while。

练习 6 / 7while:倒计时去闯关页做这题 →
教学 07 / 07

4、break 和 continue:控制循环流程

光有循环还不够,有时候需要在循环中途跳出或者跳过:

语句作用
break立刻跳出整个循环
continue跳过本次循环剩下的代码,进入下一次

break:满足条件就退出

例子——累加 1+2+3+...,一旦总和超过 1000 就停下来:

python到闯关页运行这段 →
total = 0
for n in range(1, 1000):
    total = total + n
    if total > 1000:
        break

print(total)

输出:

1035

break 让循环立刻结束,不再继续往后跑。

continue:跳过本次

例子——统计 1 到 10 中奇数的和(偶数跳过):

python到闯关页运行这段 →
total = 0
for n in range(1, 11):
    if n % 2 == 0:
        continue   # 偶数:跳过下面的累加,直接进入下一轮
    total = total + n

print(total)

输出:

25

1+3+5+7+9 = 25 ✓

嵌套循环

循环可以嵌套——一个 for 里再写一个 for / while。break / continue 只对最近的那一层循环生效。

python到闯关页运行这段 →
for i in range(3):
    for j in range(3):
        if j == 2:
            break    # 只跳出 j 那层
        print(i, j)

输出:

0 0
0 1
1 0
1 1
2 0
2 1
练习 7 / 7continue:1-10 的奇数和去闯关页做这题 →

读完了?动手练一遍才算真会。

去闯关模式练习 →