龙空技术网

结构化程序设计的3种基本结构,手把手带你玩转Python

电子工业出版社 1520

前言:

此时姐妹们对“pythonstructure”可能比较重视,兄弟们都需要学习一些“pythonstructure”的相关资讯。那么小编同时在网络上收集了一些关于“pythonstructure””的相关资讯,希望小伙伴们能喜欢,兄弟们快快来了解一下吧!

第3章 顺序结构语句与条件控制语句

计算机在解决某个具体问题时,主要有3种情形,分别是顺序执行所有的语句、选择执行部分语句和循环执行部分语句。对应程序设计中的3种基本结构是顺序结构、选择结构和循环结构。这3种结构在程序代码中的体现如下。

通过上面的代码特征,可以总结出结构化程序设计的3种基本结构,如图3.1所示。

图3.1 结构化程序设计的3种基本结构

本章将对Python中的顺序结构语句和条件控制语句进行介绍。

3.1 顺序结构语句

顺序结构语句就是按程序语句的自然顺序,从上到下,依次执行每条语句的程序。顺序结构语句是程序中最基础的语句,赋值语句、输入/输出语句、模块导入语句等都是顺序结构语句。

3.1.1 赋值语句

在Python中,任何一个变量,只要想用它,就要先赋值。语句格式如下:

对象可以是任何常数、已经有值的变量或表达式。但变量必须是一个明确的、已命名的变量。简单的赋值语句如下:

在赋值时,可以将一个对象赋值给多个目标,每个目标变化,都会影响其他目标,这样的赋值称为多目标赋值或共享引用。例如:

学习笔记

赋值语句是程序设计语言中最简单的、使用最多的语句,在程序设计过程中,赋值语句的使用是否合理、恰当,不但可以提高代码的执行效率,同时也可以反映一个程序员的基本编程能力,如表3.1所示的赋值语句,看看你已经掌握了几个。

表3.1 赋值语句

Python中的增强赋值是从C语言中借鉴过来的,用法基本和C语言一致,采用二元表达式和赋值语句的结合,如使用“+”的赋值语句,a += b 相当于赋值语句a = a + b。常用的运算符主要有+=、-=、*=、/=、//=、**=、%=。位操作符有^=、<<=、|=、>>=、//=y。增强赋值语句代码如下:

学习笔记

使用增强赋值语句的优点如下。

· 代码简洁,减少输入代码。

· 效率高,代码执行速度更快,如x+=y,代码只执行一次,而x=x+y,代码执行两次。

· 更易优化,对于支持在原处修改的对象,增强形式会自动执行原处的修改,而不是更慢的复制。

3.1.2 输入/输出语句

在程序中,很多数据是通过键盘输入的。通过键盘输入数据,不但可以增加程序与用户之间的交流互动,也可以实现程序对用户的有效识别与控制。输入/输出语句是典型的顺序结构语句,代码如下:

3.2 常用条件语句

程序中的选择语句也称为条件语句,即按照条件选择执行不同的代码段。Python中选择语句主要有3种形式,分别为if语句、if…else语句和if…elif…else语句。

3.2.1 if语句

微课视频

Python中使用if保留字来组成选择语句,其语法格式如下:

其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如,a>b and a != c)。如果表达式为真,则执行“语句块”;如果表达式为假,则跳过“语句块”,继续执行后面的语句。这种形式的if语句相当于汉语里的关联词语“如果……则……”,其流程图如图3.2所示。

图3.2 if语句的流程图

在条件语句的表达式中,经常需要逻辑判断、比较操作和布尔运算,它们是条件语句(if ,while)的基础,掌握了它们才能够更好地运用条件语句,如表3.2所示为条件语句中常用的比较运算符及其说明。

表3.2 条件语句中常用的比较运算符及其说明

如果你购买了一张彩票,现在公布出来的中奖号码是“432678”,那么使用if语句可以判断是否中奖,代码如下:

在实际商品销售中,经常需要对商品的价格、销量进行分类,如果商品日销量大于或等于100,那么可以用A来表示,使用if语句实现方法如下:

如果商品日销量小于100,那么可以用B来表示,使用if语句实现方法如下:

在开发程序时,有时需要判断某些元素是否在一定范围内,可以使用in或not in。例如,在判断用户输入的内容时,经常需要判断用户输入的是数字还是字符,即对输入的内容进行验证。例如,要求用户输入一个小写字母,如果输入正确,那么提示用户“输入正确,将进入下一步操作!!”,使用if语句实现方法如下:

如果要求用户输入的是0~9之间的数字,输入非法字符则提示用户重新输入,使用if语句实现方法如下:

有时可以直接利用字符串的真值进行逻辑判断,如果条件为真,则执行代码块;如果条件为假,则不执行代码块。例如,要求用户输入手机号码的2位尾数,如果输入的尾数为“01”,则提示用户“祝贺您获得特等奖!!”,使用if语句实现方法如下:

学习笔记

在使用if语句时,如果只有一条语句,语句块可以直接写到“:”的右侧,如下面的代码:

但是,为了程序代码的可读性,建议不要这么做。

学习笔记

if语句后面未加冒号,如下面的代码:

运行程序后,将产生如图3.3所示的语法错误。

图3.3 语法错误

解决的方法是在第2行代码的结尾处添加英文半角的冒号,正确的代码如下:

3.2.2 if…else语句

微课视频

生活中经常遇到二选一的情况,例如,如果明天下雨,就去看电影,否则就去踢足球;如果密码输入正确,就进入网站,否则需要重新输入密码;如果购物金额超过200元,就可以返100元购物券,否则就只能参加加钱换购活动。Python提供了if…else语句解决类似问题,其语法格式如下:

在使用if…else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。如果满足条件,则执行“语句块1”,否则执行“语句块2”。这种形式的选择语句相当于汉语里的关联词语“如果……否则……”,其流程图如图3.4所示。

图3.4 if…else语句的流程图

在登录网站时,通常需要输入用户名称和登录密码,然后验证是否为网站的注册用户。现在使用if…else语句来判断用户输入的用户名称是否正确。假设用户名称为mingri,如果用户名称输入正确,则输出“正在登录网站,请稍后!!”;如果用户名称输入错误,则输出“输入用户名称有误,请重新输入!!”。

上面的代码只对用户名称进行了验证,下面同时对用户名称和登录密码进行验证,这时需要使用and运算符,代码如下:

3.2.3 if…elif…else语句

微课视频

if…elif…else语句是一个多分支选择语句,通常表现为“如果满足某种条件,进行某种处理;否则,如果满足另一种条件,则执行另一种处理”。if…elif…else语句的语法格式如下:

在使用if…elif…else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。如果表达式为真,则执行语句;如果表达式为假,则跳过该语句,进行下一个elif的判断;只有在所有表达式都为假的情况下,才会执行else中的语句。if…elif…else语句的流程图如图3.5所示。

图3.5 if…elif…else语句的流程图

学习笔记

if和elif都需要判断表达式的真假,而else则不需要判断;另外,elif和else都必须跟if一起使用,不能单独使用。

当大家还在谈论“00后”,“10后”时,“20后”马上就要出生了。根据输入的出生年份,可以判断属于哪个年龄阶层。例如,输入1985,输出“您属于80后,任重道远!”;输入1978,输出“您属于70后,老骥伏枥!”;输入1997,输出“您属于90后,劈波斩浪!”;输入2000,输出“您属于00后,柳暗花明!”;输入2012,输出“您属于10后,前程似锦!”,代码如下:

上面的代码需要注意的是年份边界的控制,如“00后”的年份边界是2010>year>=2000,边界不能包括2010,但必须包括2000。选择条件2010>year>=2000也可以写成year>=2000 and year<2010。另外,elif语句也可以用else…if语句替代,只是代码会变得比较复杂,可读性没有elif好,如上面代码用else…if实现如下:

3.3 if语句的嵌套

微课视频

前面介绍了3种形式的if选择语句,这3种形式的选择语句之间都可以进行相互嵌套。

在最简单的if语句中嵌套if…else语句,语法格式如下:

在if…else语句中嵌套if…else语句,语法格式如下:

象限是平面直角坐标系中横轴和纵轴所划分的四个区域,每一个区域叫作一个象限。象限以原点为中心,x轴、y轴为分界线。右上的称为第一象限(x>0,y>0),左上的称为第二象限(x<0,y>0),左下的称为第三象限(x<0,y<0),右下的称为第四象限(x>0,y<0)。坐标轴上的点不属于任何象限,象限关系如图3.6所示。如果想要编写一个程序,根据用户输入的坐标值,判断用户输入的坐标属于第几象限,可以使用if嵌套语句来对输入的x值、y值进行判断,从而实现对输入坐标点象限的判定。设计坐标点象限判断算法如图3.7所示,根据算法,编写代码如下:

图3.6 象限关系图

图3.7 设计坐标点象限判断算法

输入坐标,运行结果如图3.8~图3.10所示。

图3.8 x>0,y>0属于第一象限

图3.9 x<0,y>0属于第二象限

图3.10 x>0,y<0属于第四象限

学习笔记

if语句可以有多种嵌套方式,用户在开发程序时可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。

3.4 使用and连接条件的选择语句

在实际工作中,经常会遇到需要同时满足两个或两个以上条件才能执行if后面的语句块,如图3.11所示。

图3.11 and语句的流程图

and是Python的逻辑运算符,可以使用and进行多个条件内容的判断。只有同时满足多个条件,才能执行if后面的语句块。例如,年龄在18周岁以上70周岁以下,可以申请小型汽车驾驶证。可以分解为两个条件:

●年龄在18周岁以上,即“年龄>=18”。

●70周岁以下,即“年龄<=70”。

使用and来实现满足这两个条件的判断,输入年龄>=18,年龄<=70,使用print()函数输出“您可以申请小型汽车驾驶证!”,代码如下:

其实,不使用and语句,只使用if语句嵌套,也可以实现上面的效果,代码如下:

求除以三余二,除以五余三,除以七余二的数,利用and连接多个条件语句实现,代码如下:

当输入23时,运行结果如图3.12所示。

图3.12 输入的是符合条件的数

当输入17时,运行结果如图3.13所示。

图3.13 输入的是不符合条件的数

学习笔记

当输入不符合条件的数时,程序没有任何反应,读者可以自己编写相关代码解决该问题。

3.5 使用or连接条件的选择语句

有时,会遇到只需要满足两个或两个以上条件之一,就能执行if后面的语句块,如图3.14所示。

图3.14 使用or连接条件语句的流程图

or是Python的逻辑运算符,可以使用or进行多个条件内容的判断。只要满足一个条件,就可以执行if后面的语句块。例如,将日销量低于10的商品,高于100的商品,列为重点关注商品。使用or实现两个条件的判断,输入的日销量<10或日销量>100,使用print()函数输出“该商品为重点关注商品”,代码如下:

不用or语句,只用两个简单的if语句,也可以实现上面的效果,代码如下:

3.6 使用not关键字的选择语句

在开发程序中,用户可能面临如下情况。

●如果变量值不为空值,则输出“You win !”,否则输出“You lost !”。

●在输入密码时,输入非数字均认为非法输入。

用户可以使用not关键字进行上面程序的判断。not为逻辑运算符,用于布尔型True和False。not与条件判断语句if连用,当not后面的表达式为False时,执行冒号后面的语句,示例代码如下:

上面的程序输出结果为“You lost !”。需要注意的是,当not后面的表达式为False时,执行冒号后面的语句,所以not后面的表达式的值尤为关键。如果在代码前加入:

则输出结果为“You win !”。

学习笔记

在Python中,False、None、空字符串、空列表、空字典、空元组都相当于False。

“if x is not None”是最好的写法,不仅清晰,而且不会出现错误,以后请坚持使用这种写法。使用“if not x”这种写法的前提是,必须清楚当x等于None、False、空字符串、0、空列表、空字典、空元组时,对判断没有影响才行。

在Python中,要判断特定的值是否存在列表中,可以使用关键字in;判断特定的值不存在列表中,可以使用关键字not in。例如,在输入密码时,输入非数字均认为是非法输入,代码如下:

运行程序,通过键盘输入1位数字,没有任何提示;如果输入非数字,则输出“非法输入”。

标签: #pythonstructure #python程序结构有哪些 #python中的程序结构 #python结构设计 #python 结构设计