分支结构

  分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。

任务一:计算绝对值

  输入一个数,输出这个数的绝对值

分支语句(条件语句)

  Python 条件语句是通过对条件的判断(True 或者 False)来决定执行的代码块。又被称为if语句,关键字为if、elif、else。完整形式如下:

if 条件1:
    语句块1
[elif 条件2:
    语句块2
else:
    语句块3]

  if语句的格式需要特别注意空格、冒号和缩进。注意,在python中使用缩进来判断该语句所属范围,所以在python中不必要的缩进不应该出现,否则会产生不必要的错误。

在实际使用中,根据算法有以下分支的情况。

单分支

代码格式

if 条件1:
    语句块1

样例程序

# 如果num是奇数打印'奇数'
num = 11
if num%2 != 0:
	print('奇数')

双分支

代码格式

if 条件1:
    语句块1
else:
    语句块2

样例程序

# 根据成绩合格范围打印'合格'或者'不合格'
grade = 96
if grade >= 60:
	 print('合格')
else:
	 print('不合格')

分支语句的条件

关系表达式

以下假设变量 a 为 1量 b 为20:

运算符

描述

实例

==

等于 - 比较对象是否相等

(a == b) 返回 False。

!=

不等于 - 比较两个对象是否不相等

(a != b) 返回 True。

>

大于 - 返回x是否大于y

(a > b) 返回 False。

<

小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。

(a < b) 返回 True。

>=

大于等于 - 返回x是否大于等于y。

(a >= b) 返回 False。

<=

小于等于 - 返回x是否小于等于y。

(a <= b) 返回 True。

逻辑表达式

以下假设变量 a 为 True, b为 False:

运算符

逻辑表达式

描述

实例

and

x and y

并且,多个条件同时成立,值为True;否则,值为False

(a and b) 返回 False。

or

x or y

或者,多个条件,至少有一个成立,值为True;否则,值为False

(a or b) 返回 True。

not

not x

取反,当条件不成立时,值为True;否则,值为False

not(a and b) 返回 True

任务二:给适宜心率程序加上判断功能

最适宜运动心率 =(基准心率 - 年龄 - 安静心率)×( 60% ~ 80%) + 安静心率

算式中的基准心率,根据性别,男性为220,女性为210,请优化最佳运动心率计算程序,加入性别判断功能,可以根据性别判断输出准确的结果。

增加功能的流程图:  

拓展任务

1.判断三角形

输入三个数,判断它们能否构成三角形,并输出提示。

2.判断闰年

输入一个年份,判断是否为闰年,并输出结果。

闰年的条件为: 条件1 普通年能整除4且不能整除100的为闰年。(如2004年就是闰年,1900年不是闰年)

条件2 世纪年能整除400的是闰年。(如2000年是闰年,1900年不是闰年)

3.完善BMI计算器

参照下表,修改BMI计算程序,可以根据计算结果输出对应体型状况,并给出危险提醒。

拓展知识

多分支

代码格式

if 条件1:
    语句块1
……
elif 条件2:
    语句块2
……
else:
    语句块n

样例代码

# 根据成绩合格范围打印'优秀(90以上)''合格(60-90)'、'不合格(60以下)'
grade = 96
if grade > 90:
	 print('优秀')
elif 60 <= grade < 90:
	 print('合格')
else:
	 print('不合格')

分支的嵌套(多分支)

代码格式

if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句

样例代码

#判断输入数字能否被2和3整除
num=int(input("输入一个数字:"))
if num%2==0:
    if num%3==0:
        print("你输入的数字可以整除 2 和 3")
    else:
        print("你输入的数字可以整除 2,但不能整除 3")
else:
    if num%3==0:
        print("你输入的数字可以整除 3,但不能整除 2")
    else:
        print("你输入的数字不能整除 2 和 3")