程序控制结构
- 单分支 if 二分支 if-else 及紧凑形式
- 多分支 if-elif-else 及条件之间关系
- not and or > >= == <= < !=
- 异常处理 try-except-else-finally
程序的分支结构与猜数游戏
根据判断条件结果而选择不同向前路径的运行方式
单分支结构
guess = eval(input())
if guess == 99:
print("猜对了")
二分支结构
- 常见的表达形式
guess = eval(input())
if guess == 99:
print("猜对了")
else :
print("猜错了")
- 紧凑形式:适用于简单表达式的二分支结构
guess = eval(input())
print("猜{}了".format("对" if guess==99 else "错"))
多分支结构与对不同分数分级的问题
score = eval(input())
if score >= 60:
grade = "D"
elif score >= 70:
grade = "C"
elif score >= 80:
grade = "B"
elif score >= 90:
grade = "A"
print("输入成绩属于级别{}".format(grade))
- 注意多条件之间的包含关系
- 注意变量取值范围的覆盖
条件判断及组合
- 操作符
guess = eval(input())
if guess > 99 or guess < 99:
print("猜错了")
else :
print("猜对了")
- 用于条件组合的三个保留字
if not True:
print("语句块2")
else :
print("语句块1")
程序的异常处理
num = eval(input("请输入一个整数: "))
print(num**2)
问题:当用户没有输入整数时,会产生异常,怎么处理?
异常基本处理–两种方式
- 不指定异常类型
try :
<语句块1>
except :
<语句块2>
try :
num = eval(input("请输入一个整数: "))
print(num**2)
except :
print("输入不是整数")
- 捕捉指定异常类型
try :
<语句块1>
except <异常类型> :
<语句块2>
try :
num = eval(input("请输入一个整数: "))
print(num**2)
except NameError:
print("输入不是整数")
- 标注异常类型后,仅响应此类异常
- 异常类型名字等同于变量名
异常处理的高级使用
try :
<语句块1>
except :
<语句块2>
else :
<语句块3>
finally :
<语句块4>
- finally对应语句块4一定执行
- else对应语句块3在不发生异常时执行
else是一个奖励模块,如果没有异常发生,就执行
实例5: 身体质量指数BMI
问题
- 实例:体重 72 kg 身高 1.75 m
BMI 值是 23.5 - 这个值是否健康呢?
BMI = 体重 (kg) / 身高2 (m2)
问题分析
- 输入:给定体重和身高值
- 输出:BMI指标分类信息(国际和国内)
问题思路
- 难点在于同时输出国际和国内对应的分类
- 思路1:分别计算并给出国际和国内BMI分类
- 思路2:混合计算并给出国际和国内BMI分类
#CalBMI.py
height,weight = eval(input("请输入身高(米)和体重(公斤)[用逗号分隔]:"))
bmi = weight/pow(height,2)
print("BMI 数值为:{:.2f}".format(bmi))
who,nat = "",""
if bmi < 18.5:
who,nat = "偏瘦","偏瘦"
elif 18.5 <= bmi < 24:
who,nat = "正常","正常"
elif 24 <= bmi < 25:
who,nat = "偏胖","正常"
elif 25 <= bmi < 28:
who,nat = "偏胖","偏胖"
elif 28 <= bmi <30:
who,nat = "肥胖","偏胖"
else :
who,nat = "肥胖","肥胖"
who = "肥胖"
print("BMI指标:国际'{0}',国内'{1}'".format(nat,who))
举一反三
关注多分支条件的组合
- 多分支条件之间的覆盖是重要问题
- 程序可运行,但如果不正确,要注意多分支
- 分支结构是程序的重要框架,读程序先看分支