一、简单分支
计算机程序可以被理解为一条顺序执行的代码,顺序结构是程序设计的基础,但单一的顺序结构不可能解决所有的问题。因此,需要引入控制结构来改变程序的执行顺序,以满足复杂的功能需求。
如何允许程序在不同情况下,以不同的顺序执行指令。以及如何有效的选择程序的执行路径。
二、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()
程序运行结果