python程序流程控制(八) ---顺序结构、选择结构

本文思维导图

python程序流程控制(八) ---顺序结构、选择结构_第1张图片

顺序结构

若程序中的语句按各语句出现位置的先后次序执行,称为顺序结构。

选择结构

选择结构可以根据条件来控制代码的执行分支,也叫做分支结构。python使用if语句来实现分支结构。

1,分支结构的形式:
分支结构包含单分支、双分支和多分支
python程序流程控制(八) ---顺序结构、选择结构_第2张图片

2,单分支结构:
if语句单分支结构的语法形式:

if(条件表达式):
	语句或者语句块

其中:
1,条件表达式可以是关系表达式、逻辑表达式、算术表达式等。
2,语句或者语句块指的是可以是单个语句,也可以是多个语句。多个语句的缩进必须一致。
当条件表达式的值为True时,执行if后的语句,否者不做任何的操作,控制将转到if语句的结束点。
举个例子:

age = 12
if age < 18: # 表达式的值为False
    print('18岁以下不宜观看')

这里补充一点:条件表达式的是 1,数值类型(0) 2,空字符串(“”)3,空元组(())4,空列表([])5,空字典({})这些都是表示False

3,双分支结构:
if语句双分支结构的语法形式:

if(条件表达式):
	语句或者语句块(1)
else:
	语句或者语句块(2)

当条件表达式的值为True时,执行if后的语句(1),否者执行else后的语句(2)。
在得前面写的文章中,提到了python中没有三元条件运算符,但是可以使用if语句来实现类似的功能。其语法是

条件为True时的值 if(条件表达式) else 条件为假时的值
y=x if(x>=1) else 0
等价于
if(x>=1):
	y =x
else:
	y=0

现在,我们来进行对下面的数学公式进行编程,我们能否用上面说的单分支、双分支、三元条件运算符实现呢?python程序流程控制(八) ---顺序结构、选择结构_第3张图片
先看看单分支的代码:

if(x>=0):
    y =math.sin(x) + 2*math.sqrt(x) - math.pow(x+1,3)
if(x<0):
    y =math.log(-5*x) - math.fabs(x*x - 8*x)/(7*x) +math.e

这里我们可以把第二个if(x<0) 改为else 。这样就可以演变成双分支了

if(x>=0):
    y = math.sin(x) + 2 * math.sqrt(x) - math.pow(x + 1, 3)
else:
    y = math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e

我们在接着改进,能否写成三元条件运算符呢?当然可以!

y =math.sin(x) + 2*math.sqrt(x) - math.pow(x+1,3) if(x>=0) \
    else math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e

4,多分支结构
if语句多分支结构的语法形式:

if(条件表达式):
	语句或者语句块
elif(条件表达式):
	语句或者语句块
。。。省略
elif(条件表达式):
 	语句或者语句块
else:              注意:可选
	语句或者语句块

该语句的作用就是根据不同条件表达式的值确定执行哪个语句。

说到多分支结构,不得不说一个经典的例子:
编写程序,判断学生成绩等级,等级分为A-E,其中90分以上为A,80-89为B,70-79为C,60-69为D,60分一下为E。

n = int(input('请输入学生分数:'))      #使用input()函数,输入一个数字给n
if n >= 90:                       			  #使用if语句判断成绩等级
    print('A')
elif 80 <= n < 90: #或者   条件表达式为80 <= n and n< 90
    print('B')
elif 70 <= n < 80:
    print('C')
elif 60 <= n < 70:
    print('D')
else:
    print('E')

我们还可以做一些有意思的程序,比如编写一个判断是否肥胖的程序:

weight = eval(input('请输入您的体重(kg):'))
height = eval(input('请输入您的身高(m):'))
BMI =  weight/height**2
if BMI<18.5:
    print('您的体型偏瘦')
elif BMI >=18.5 and BMI<25:
    print('您的体型正常')
else:
    print('您的体型偏胖哦!')

5,if语句的嵌套:
在if语句中包含一个或者多个if语句称为if语句的嵌套,嵌套还是很好理解,但是在编写嵌套语句时,要注意嵌套的顺序不要错乱。

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

举个小栗子,理解一下,

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")

输入一个数字:100
你输入的数字可以整除 2,但不能整除 3

再接着来个栗子!

has_ticket = input('请输入是否有票(1:有票,0:没票):')
knife_length = int(input('请输刀的长度(厘米):'))
if has_ticket:
    print('车票检查通过,准备开始安检')
    if knife_length <20:
        print('刀的长度有 %d 厘米,不超过20厘米,允许上车' % knife_length)
    else:
        print('刀的长度有 %d 厘米,超过20厘米,不允许上车' % knife_length)
else:
    print('没有车票,不允许进站')


请输入是否有票(1:有票,0:没票):1
请输刀的长度(厘米):1
车票检查通过,准备开始安检
刀的长度有 1 厘米,不超过20厘米,允许上车

哈哈,在吃个栗子!

score = eval(input('请输入您的分数:'))
if score >= 60:
    print('你已经及格')
    if score >= 80:
        print('您很优秀')
    else:
        print('还行,可以更好噢!')
else:
    print('不及格')
    if score < 30:
        print('有点难办,要加油哦')
    else:
        print('还能抢救一下')
print("程序结束")
请输入您的分数:89
你已经及格
您很优秀
程序结束
``

最后解释一个知识点:条件表达式

典型的条件表达式一般由运算符、操作数组成,其中,操作数指运算符处理的数据,运算符指对操作数进行运算处理的符号
python程序流程控制(八) ---顺序结构、选择结构_第4张图片

在补一张,经典的应用栗子
python程序流程控制(八) ---顺序结构、选择结构_第5张图片
注意:熟悉c或者java等语言的朋友,可能会有疑问python中没有switch语句吗?python中确实没有。

大家可以找一些编程题,多练习一下。

你可能感兴趣的:(python基础大全)