Python程序流程控制
1.* 程序流程概述
在现实生活中,我们看到的流程是多种多样的,如汽车在道路上行驶,要顺序地沿道路前进,碰到交叉路口时,驾驶员就需要判断是转弯还是直行,在环路上是继续前进还是从一个出口出去等。在编程的世界里遇到这些状况时,可以改变程序的执行流程,即用流程控制和流程控制语句。
语句是构造程序的基本单位,程序运行的过程就是执行程序语句的过程。程序语句执行的次序称之为流程控制(控制流程)。
流程控制的结构有顺序结构、选择结构和循环结构三种。例如,生产线上零件的流动过程,应该顺序地从一个工序流向下一个工序,这就是顺序结构。但当检测不合格时,就需要从这道工序中退出,或者继续在这道工序中再加工直到检测通过为止,这就是选择结构和循环结构。
1.* 基本处理流程
对数据结构的处理流程称为基本处理流程。在Python中,基本处理流程包含三种结构,即顺序结构、选择结构和循环结构。顺序结构是Python脚本程序中基本的结构,它按照语句出现的先后顺序依次执行,如图所示:
选择结构按照给定的逻辑条件来决定执行顺序,有单向选择、双向选择和多向选择之分,但程序在执行过程中只执行其中一条分支。单向选择和双向选择结构如图所示:
循环结构即根据代码的逻辑条件来判断是否重复执行某一段程序,若逻辑条件为True,则进入循环重复执行,否则结束循环。循环结构可分为条件循环和计数循环,如图所示:
一般在Python语言中,程序总体是按照顺序结构执行的,而在顺序结构中可以包含选择结构和循环结构。
1.* 多样的赋值语句
赋值语句是Python程序中常用的语句。因为经常需要大量的变量存储程序中用到的数据,所以用来对变量进行赋值的赋值语句也会在程序中大量出现。
1.*.& 基本赋值
赋值的作用是赋予变量的值,使之能够参与运算。比如x只是一个字母(变量),不能进行加、减、乘、除的运算,如果给它赋予100的值,就可以参与运算了。
赋值语句的语法格式如下:
点击查看代码
变量名 = 表达式
其中,“=”为赋值号,编程中的等于号为“==”。
Python中的变量不需要声明。每个变量在使用之前都必须赋值,赋值后该变量才会被创建。在Python中,变量没有类型,所说的“类型”是指内存中对象的类型。
注意:赋值不是直接将一个值赋给一个变量,对象是通过引用传递的。不管变量是新创建的、还是已经存在的,都是将该对象的引用赋值给变量。
C语言中,把赋值语句当作一个表达式,可以返回值。但在Python中,赋值语句不会返回值。
提示:经常有人将
==
符号误写成=
。=
是赋值运算符,==
是关系运算符的“等于号”,两者是不同的,千万不能混淆。
1.*.& 序列解包
由于赋值运算符的结合性是由右至左,因此在Python语言中,可以一次性给多个变量同时赋值。
当遇到多个变量赋值时,就不需要逐次对每个变量进行赋值了,用一条语句就可以解决。
点击查看代码
>>> a, b, c = 1, 2, 3
>>> a
1
>>> b
2
>>> c
3
>>>
在Python中,上述代码就是序列解包,即先将多个值的序列解开,然后放到变量序列中。从上面的结果看,列表解包后,变量获得了对应的值。
需要特别注意的是,解包序列中的元素数量必须与放置在赋值符号左边的数量完全一致,否则会在赋值时引发异常。
1.*.& 链式赋值
链式赋值是将同一个值赋给多个变量,即可以一次性为不同的变量赋予同一个值。
1.*.& 其他赋值方式
赋值运算符也可以是一些复合的赋值运算符,如加赋值运算符+=
、减赋值运算符-=
、乘赋值运算符*=
、除赋值运算符/=
等。
下表中左侧的表达式等价于右边的表达式:
表达式 | 等价于 |
---|---|
n+=25 | n=n+25 |
n-=25 | n=n-25 |
n*=25 | n=n*25 |
n/=25 | n=n/25 |
1.* 顺序结构
顺序结构的程序是指程序中的所有语句都是按照书写顺序逐一执行的,只是顺序结构的程序其功能有限。
下面是一个包含顺序结构的程序示例:
该程序是一个顺序结构的程序,首先定义radius和area两个变量,在屏幕上输出“请输入半径值:”的提示语句,再通过键盘输入获取数据复制给变量radius,然后为变量area赋值,最后输出area的值。程序的执行过程是按照书写语句一步步地顺序执行的,直至程序结束。
因为input()函数输入的是字符串格式,所以在键盘输入的浮点数并不是真正的浮点数,而是字符串形式。因为radius是字符串形式,不可以相乘,所以在执行语句
area = 3.1416 * radius * radius
时会报错。这里使用float()函数强制将输入的半径转换为浮点数。
如果不使用float()函数,在进行乘法运算时就会报错。
1.* 布尔表达式
布尔表达式是值为True或False的一种Python表达式。
例如,使用“==”双等于操作符来比较两个操作对象是否相等,若相等,则返回结果True,否则返回False。
这里的真值(True)和假值(False)是Python基础数据类型中bool的两个特殊值,它们不是字符串。
使用bool()函数可以将其他值转换为布尔类型。
1.* 选择结构与语句
条件判断语句就是对语句中不同条件的值进行判断,进而根据不同的条件执行不同的语句。
1.*.& 选择结构
选择结构也称为分支结构,用于处理在程序中出现两条或更多执行路径可供选择的情况。选择结构可以用分支语句来实现。分支语句主要为if语句。
先来看一个具有选择结构的程序示例:
该程序是一个选择结构的程序,在执行过程中会按照键盘输入值的大小顺序选择不同的语句执行。若“a > b”,则执行“print("它们的差值:", a - b)”;若“a <= b”,则执行“print("它们的差值:", b - a)”。
1.*.& if语句
if语句是使用非常普遍的条件选择语句,每一种编程语言都有一种或多种形式的if语句,在编程中它是经常被用到的。
if语句的格式如下:
点击查看代码
if 表达式1:
语句1
elif 表达式2:
语句2
...
else:
语句n
若表达式1为真,则Python运行语句1,反之则向下运行。如果没有条件为真,就运行else内的语句。elif与else语句都是可以省略的。可以在语句内使用pass语句,表示不运行任何动作。
注意以下问题:
- 每个条件后面要使用冒号
:
,表示接下来是满足条件后要执行的语句块。 - 使用缩进划分语句块,相同缩进数的语句在一起组成一个语句块。
- 在Python中没有switch...case语句。
以下为if中常用的操作运算符:
<
:小于。<=
:小于或等于。>
:大于。>=
:大于或等于。==
:等于,比较对象是否相等。!=
:不等于。
1.*.& if嵌套
在嵌套if语句中,可以把if...elif...else结构放在另外一个if...elif...else结构中。该语法格式如下:
点击查看代码
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else
语句
elif 表达式4:
语句
else:
语句
1.*.& 多重条件判断
在Python编程中,经常会遇到多重条件比较的情况。在多重条件比较时,需要用到and或or运算符。其中,and运算符用于多个条件同时满足的情况;or运算符用于只有一个条件满足即可。
1.* 循环控制语句
循环语句主要是在满足条件的情况下反复执行某一个操作。循环控制语句主要包括while语句和for语句。
1.*.& while语句
while语句是循环语句,也是条件判断语句。
while语句语法格式如下:
点击查看代码
while 判断条件:
语句
这里同样需要注意冒号和缩进。
下面通过一个示例计算1~20的总和:
注意:如果在这里遗漏代码行b += 1,程序就会进入无限循环中。因为变量b的初始值为1,但并且会发生变化,所以b <= a始终为True,导致while循环不会停止。
要避免无限循环的问题,就必须对每个while循环进行测试,确保其会按预期的那样结束。如果希望程序在用户输入特定值时结束,那么可运行程序并输入这样的值;如果在这种情况下程序没有结束,那么请检查程序处理这个值的方式,确认程序至少有一个这样的地方能让循环条件变为False,或者让break语句得以执行。
如果条件表达式一直为True,while循环就会进入无限循环中。无限循环应用也比较广泛,如在服务器上处理客户端的实时请求时就非常有用。
while无限循环中的应用案例如下:
如果用户想退出无限循环,可以按Ctrl+C组合键。
当while循环体中只有一条语句时,可以将该语句与while写在同一行中。例如:
while语句可以和else配合使用,表示当while语句的条件表达式为False时,执行else的语句块,如下案例所示:
1.*.& for语句
for语句通常条件控制和循环由两部分组成。
for语句语法格式如下:
点击查看代码
for <variable> in <sequence>:
语句
else:
语句
其中,<variable>
是一个变量名称,<sequence>
是一个列表。else语句运行的时机是当for语句都没有运行,或者最后一个循环已经运行时。else语句是可以省略的。
下面实例打印变量n所有的值:
下面实例打印变量a1,a2所有的值:
若想跳出循环,则可以使用break语句,该语句用于跳出当前循环体:
从结果可以看出,当搜索到西瓜时,会跳出当前循环,对应的循环else块将不执行。
1.*.& continue语句和else语句
使用continue语句,Python将跳过当前循环块中的剩余语句,继续进行下一轮循环:
从结果可以看出,当变量为80时,将跳出当前循环,进入下一个循环中。
当for循环被执行完毕或while循环条件为False时,else语句才会被执行。需要特别注意的是,如果循环被break语句终止,那么else语句不会被执行:
1.*.& pass语句
pass是空语句,主要为了保持程序结构的完整性。pass不做任何事情,一般用作占位语句:
从结果可以看出,当搜索到文字“鱼”时,先执行“print('执行pass语句')”,然后执行“print('当前文字:', a)”。
标签:语句,控制,Python,代码,程序流程,else,循环,赋值 From: https://www.cnblogs.com/hzhiping/p/16884577.html