若程序中的语句按各语句出现位置的先后次序执行,称为顺序结构。
选择结构可以根据条件来控制代码的执行分支,也叫做分支结构。python使用if语句来实现分支结构。
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
现在,我们来进行对下面的数学公式进行编程,我们能否用上面说的单分支、双分支、三元条件运算符实现呢?
先看看单分支的代码:
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
你已经及格
您很优秀
程序结束
``
典型的条件表达式一般由运算符、操作数组成,其中,操作数指运算符处理的数据,运算符指对操作数进行运算处理的符号
在补一张,经典的应用栗子
注意:熟悉c或者java等语言的朋友,可能会有疑问python中没有switch语句吗?python中确实没有。
大家可以找一些编程题,多练习一下。