返回课程目录

第 03 章 程序控制结构

学习目标

  • 区分顺序、分支和循环三种控制结构。
  • 使用 if、if-else 和 if-elif-else 处理分支。
  • 使用 for、while、break 和 continue 控制循环。
  • 用 try-except 捕获常见运行异常。

1. 三种基本结构

  • 顺序结构:语句从上到下执行。
  • 分支结构:根据条件选择执行路径。
  • 循环结构:条件成立时重复执行。

函数是可复用的代码,不属于第四种基本控制结构。

2. 分支结构

score = eval(input("请输入成绩:"))
if score >= 90:
    grade = "优秀"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"
print(grade)

单分支只有 if,二分支使用 if-else,多分支使用 if-elif-else。条件可以是比较表达式、逻辑表达式或布尔值。

age = 20
is_student = True
if age >= 18 and is_student:
    print("成年学生")

条件中不能使用赋值号 =。if n = 3 是语法错误,应写成 if n == 3。

3. 遍历循环

for 依次访问序列中的每个元素:

total = 0
for number in range(1, 101):
    total += number
print(total)

range(1, 101) 产生 1 到 100,不包含 101。输出为 5050。

for char in "Python":
    print(char, end="-")

4. 条件循环

password = ""
while password != "2468":
    password = input("请输入密码:")
print("验证通过")

循环开始前要设置变化的初始值,循环体内要让条件最终发生变化,否则会形成无限循环。

5. break 与 continue

for number in range(1, 8):
    if number == 3:
        continue
    if number == 6:
        break
    print(number, end=" ")

输出:

1 2 4 5

continue 跳过本轮剩余语句,break 结束整个循环。Python 没有 loop 或 exit 这样的循环保留字。

6. 异常处理

try:
    value = eval(input("请输入正数:"))
    print(100 / value)
except ZeroDivisionError:
    print("除数不能为 0")
except:
    print("输入无效")

try 中放可能出错的代码,except 捕获对应异常。常见异常包括:

  • ZeroDivisionError:除数为 0。
  • ValueError:数值转换失败。
  • TypeError:数据类型不支持该操作。
  • NameError:变量不存在。
  • IndexError:序号超出范围。
  • KeyError:字典键不存在。
  • FileNotFoundError:文件不存在。

异常处理可以提高稳定性,但不能自动修正程序的逻辑错误。

本章练习

  • 输入整数,判断它是正数、负数还是 0。
  • 计算 1 到 50 中所有偶数的和。
  • 输入密码,最多允许尝试 3 次。
  • 捕获除零错误,并输出提示信息。

本章小结

  • 程序由顺序、分支和循环组合而成。
  • elif 用于多分支,条件使用比较号而不是赋值号。
  • for 适合已知序列,while 适合按条件重复。
  • continue 跳过本轮,break 结束循环,try-except 处理运行异常。