Python入门之(3.2)选择结构 | 您所在的位置:网站首页 › 选择结构嵌套的要求 › Python入门之(3.2)选择结构 |
目录 选择结构 1.1 if-else条件语句 1.2 if-elif-else判断语句 1.3 if语句的嵌套 1.4 switch语句的替代方案 选择结构 在实际应用中,有时需要通过某个判断来决定任务是否执行或者执行的方式。对于这样的情况,仅有顺序结构控制是不够的,需要选择结构。 Python中的if语句实现了选择结构控制,还可以使用if-elif结构来实现多分支控制。与其他程序设计语言相比,Python中没有switch语句,但是可以通过其他方式获得类似switch语句功能的效果。 1.1 if-else条件语句Python中的选择结构使用if和else关键字来构造,语法如下: if 条件: 条件为真时要执行的语句块 else: 条件为假时要执行的语句块 选择结构根据条件的判断结果来决定执行哪个语句块。在任何一次运行中,两个分支的语句块只执行其中的一个。不可能两个语句块同时执行。选择结构执行完毕,继续执行其后的语句。 注意: if和else语句末尾的冒号不能省略;Python通过严格的缩进来决定一个块的开始和结束,因此为真或为假的语句块都必须向右缩进相同的距离;条件可以是关系表达式或逻辑表达式,也可以是各种类型的数据。对于数值型数据(int,float,complex),非零为真,零为假。对于字符串或者集合类数据,空字符串和空集合为假,其余为真;else分支可以省略。在单分支结构中,当条件为假时,继续执行if语句块之后的代码。else不能单独使用;if可以嵌套使用。 1.2 if-elif-else判断语句在实际中经常存在两张以上的选择,比如学生成绩的等级转换,一个学生的成绩可以转换为5个不同的等级。Python中提供了if-else语句的扩展。 if-elif-else语法格式如下: if 条件1: 语句块1 elif 条件2: 语句块2 ...... elif 条件n: 语句块n else: 语句块n+1 执行过程说明如下: 首先判断条件1,如果其值为True,执行语句块1,然后结束整个选择结构;如果条件1的值为False,则判断条件2;如果其值为True,执行语句块2,然后结束整个选择结构;如果条件2的值为False,继续往下判断其他条件的值;如果所有条件的值都为False,则执行else之后的语句块n+1。 1.3 if语句的嵌套在if-else语句的缩进块中可以包含其他if-else语句,称为嵌套if-else语句。在嵌套的选择结构中,根据对齐的位置来进行else与if的配对。简单的形式如下: if 条件1: if 条件2: 语句块1 else: 语句块2 else: 语句块3 执行过程说明如下: 条件1为真时,判断条件2。条件1为假时,执行语句块3;如果条件2为真,执行语句块1,然后结束整个选择结构。如果条件2为假,执行语句块2,然后结束整个选择结构。 1.4 switch语句的替代方案C语言或Java语言都支持switch多分支结构,但是Python没有提供switch关键字。然而在有些情况下,类似于switch结构的代码的清晰性和可读性要强于if多分支结构。 在Python中可以通过字典方式模拟类似的结果,其实现方法分为两步:首先,定义一个字典。字典是由键值对组成的集合。字典的使用方式见下一章,其次,调用字典的get()函数获取相应的表达式。 一个Python支持的算术运算符(+、-、*、/、%、//、^)的简单计算器的代码如下: import re print('简单计算器') str=input('请输入只有一个运算符的式子(如5+3):') p=re.compile(r'\d+') op1=int(p.findall(str)[0]) op2=int(p.findall(str)[1]) q=re.compile(r'\W+') opt=q.findall(str)[0] if((opt=='/' or opt=='//' or opt=='%') and op2==0): print('除数为0,非法!') exit(0) #定义运算字典,po是字典的名字,字典中用逗号隔开的是键值对 po={ '+':op1+op2, '-':op1-op2, '*':op1*op2, '/':op1/op2, '^':op1^op2, '%':op1%op2, '//':op1//op2 } result=po.get(opt) print('{0}{1}{2}={3}'.format(op1,opt,op2,result)) 原来正则表达式可以这样用,其实之前在C中也算是用过,好像是sscanf函数的时候。 |
CopyRight 2018-2019 实验室设备网 版权所有 |