第 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处理运行异常。