选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支,双分支,多分支。
单分支选择结构
if语句单分支结构的语法形式如下:
if条件表达式:
语句/语句块
其中:
条件表达式:可以是逻辑表达式、关系表达式、算术表达式等等。
语句/语句块:可以是一条语句,也可以是多条语句。多条语句,缩进必须对齐一致。
【操作】输入一个数字,小于10,则打印这个数字(if_test01.py)
num=input("输入一个数字:")if int(num)<10: print(num)
条件表达式详解
在选择和循环结构中,条件表达式的值为False的情况如下:
False、0、0.0、空值None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空range对象、空迭代对象。
其他情况均为True。这么看来,Python所有的合法表达式都可以看做条件表达式,甚至包括函数调用的表达式。
if 3: print('3 is true')#以下情况表达式为Falseif "": print('非字符串是True')if []: print('[]是True')if (): print('()是True')if range(): print('range()是True')if 0: print('0是True')if 0.0: print('0.0是True')if 3<0: print('3<0是True')if False : print('True')if None: print('False')
条件表达式中,不能有赋值操作符“=”
在Python中,条件表达式不能出现赋值操作符“=”,避免了其他语言中经常误将关系运算符“==”写作赋值运算符“=”带来的困扰。如下代码将会报语法错误:
if 3<c and (c=20): print("赋值符不能出现在条件表达式中")
双分支选择结构
双分支结构的语法格式如下
if 条件表达式: 执行语句else 执行语句
【操作】输入一个数字,小于10,则打印该数字;大于10,则打印“数字太大”
num=input("输入一个数字")if int(num)<10: print("数字太小")else: print("数字太大")
三元条件运算
Python提供了三元运算符,用来在某些简单双分支赋值情况。三元条件运算符语法格式如下:
条件为真的值 if 表达式 else 条件为假的值
上一个案例代码,可以用三元条件运算符实现:
num=input("输入一个数字")print("数字太小") if int(num)<10 else print("数字太大")#或print("数字太小" if int(num)<10 else "数字太大")
可以看到,这种写法更加简洁,易读。
多分支选择结构
多分支选择结构的语法格式如下:
if 条件表达式1: 执行语句elif 条件表达式2: 执行语句... elif 条件表达式n: 执行语句n[else: 执行语句n+1 ]
【注】计算机行业,描述语法格式时,使用中括号[] 通常表示可选,非必选。
【操作】输入一个学生的成绩,将其转化成简单描述:不及格(小于60)、及格(60-79)、好(80-89)、优秀(90-100)。
score=input("输入一个成绩分数")if 0<=int(score)<60: print('不及格')elif 60<int(score)<79: print('及格')elif 80<int(score)<89: print('良好')elif 90<int(score)<100: print('优秀')else: print('分数不正常')
多分支结构,几个分支之间是有逻辑关系的,不能随意颠倒顺序。
选择结构嵌套
选择结构可以嵌套,使用时一定要注意控制好不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。语法格式如下:
if 表达式1 : 语句块1 if表达式2: 语句块2 else: 语句块3else: if表达式4: 语句块4
【操作】输入一个分数。分数在0-100之间。90以上是A,80以上是B,70以上是C,以上是D。60以下是E。
cscore=input("输入一个成绩分数")if int(score)>100 or int(score)<0: print('请输入一个0-100的分数')else: if int(score)>90:c print('A') elif int(score)>80: print('B') elif int(score)>70: print('C') elif int(score)>60: print('D') else: print('E')