热门搜索 :
考研考公
您的当前位置:首页正文

4.2简单分支

来源:东饰资讯网

一、简单分支

计算机程序可以被理解为一条顺序执行的代码,顺序结构是程序设计的基础,但单一的顺序结构不可能解决所有的问题。因此,需要引入控制结构来改变程序的执行顺序,以满足复杂的功能需求。

如何允许程序在不同情况下,以不同的顺序执行指令。以及如何有效的选择程序的执行路径。

二、PM2.5空气质量程序

PM2.5对应于空气质量等级

1、PM2.5指数分级程序功能IPO模式描述

①、输入:接受外部输入PM2.5值

②、处理:空气质量分级算法

③、输出:打印空气质量提醒

2、PM2.5指数分级伪代码

if PM2.5值>75

            打印空气污染警告

if PM2.5值<35

            打印空气质量优,建议户外运动

流程图

菱形框给出决策条件,如果条件不成立,控制传递给队列中下一个语句。条件成立,控制传递给右边的方框中。完成这些指令后,控制传递到下一个语句。

三、空气质量提醒py程序

#pm25.py

#空气质量提醒

def main():

       PM = eval ( input ("What is today's PM2.5" ) )

       #打印相应提醒

       if PM > 75 :

            print ( "Unhealthy. Be careful ! " )

       if PM < 35 :

            print ( "Good. Go running ! " )

main()

1、if语句格式

if <condition>:

        <body>

①<condition>是条件表达式

②<body>是一个或多个语句序列

2、先判断<condition>条件

①true,则执行<body>,再转向下一条语句

②false,则直接跳过<body>,转向下一条语句

if语句体的执行与否,依赖于条件判断。但无论什么情况,控制都会转向if后面的下一条语句。这就是简单分支结构。

3、简单条件构造

①简单条件基本形式<expr> <relop> <expr>

②<relop>是关系操作符<,<=,==,>=,>,!=

③使用“=”表示赋值语句,使用“==”表示等于

④除数字外,字符或字符串也可以按照字典顺序用于条件比较

⑤<condition>是布尔表达式,为bool类型,布尔值的真和假以字符True和False表示

关系操作符

四、求解二次方程的实数根程序

#quadratic.py

#计算二次方程的实数根程序

#此方程在方程没有实根的情况下报错

import math

def main () :

        print("This program finds the real solutions to a quadratic\n")

        a , b , c = eval( input ("Please enter the coefficients(a , b , c ):") )

        discRoot = math.sqrt( b * b - 4 * a * c)

        root1 = (-b + discRoot ) / (2 * a )

        root2 = (-b - discRoot ) / (2 * a )

        print( " \nThe solutions are:" , root1, root2)

main()

1、二次方程求解的IPO模式

①输入二次方程参数

②处理为二次方程求解算法

③输出为打印二次方程的根

2、执行程序,输入1,2,3时报错

程序报错

3、改进程序

#quadratic2.py

import math

def main() :

print("This program finds the real solutions to a quadratic\n")

a , b , c = eval( input("Please enter the coefficients(a , b , c ):"))

delta =  b * b - 4 * a * c

if delta >= 0:

        discRoot = math.sqrt(delta)

        root1 = (-b + discRoot ) / (2 * a )

        root2 = (-b - discRoot ) / (2 * a )

        print( " \nThe solutions are:" , root1, root2)

main()

当delta为负时,这个程序则不会调用math库中的sqrt函数

执行结果

delta小于0时会简单跳过if语句,直接退出程序,没有给出用户任何的出错反馈。好的程序应该打印一条消息,告诉用户这个方程没有实根。

所以在程序尾部添加另一个决策判断来实现消息打印。

if delta < 0 :

        print("The equation has no real roots !")

以上改进解决了出错的问题,但仍然不够完美。根据delta的值,程序应该打印无实根,或计算并显示实根。

四、二分支决策

这正是一个上面编写的双决策序列,两个结果互相排斥。如果delta>=0是真的,那么delta<0就一定是假的,反之亦然。这看起来是两个条件,但实际上他们只是一种决策。我们可以通过使用python中的if……else语句来实现这个二分支决策。

部分流程图

二分支语法结构

if <condition> :

        <statements>

else :

        <statements>

当python解释器遇到这个结构时,首先评估condition,如果condition是真的,if下面的语句被执行。如果condition是假的,转而执行else下面的语句。无论哪种情况,之后的控制都会传给if……else后面的语句。

下面给出了二次方程求解中,使用一个二次分支决策的求解二次方程的程序代码。

#quadratic3.py

import math

def main() :

        print("This program finds the real solutions to a quadratic\n")

        a , b , c = eval( input("Please enter the coefficients(a , b , c ):"))

        delta =  b * b - 4 * a * c

        if delta < 0:

                print("\nThe equation has no real roots ! ")

        else :

                discRoot = math.sqrt(delta)

                root1 = (-b + discRoot ) / (2 * a )

                root2 = (-b - discRoot ) / (2 * a )

                print( " \nThe solutions are:" , root1, root2)

main()

程序运行结果
Top