Python入门之(3.2)选择结构 您所在的位置:网站首页 选择结构嵌套的要求 Python入门之(3.2)选择结构

Python入门之(3.2)选择结构

2023-09-10 21:56| 来源: 网络整理| 查看: 265

目录

选择结构

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 实验室设备网 版权所有