流程控制就像我们开车一样,按照导航或者路标的指示,我们就能达到目的地,同样,在Python中,流程控制语句能够控制代码运行的顺序,从而实现我们的程序设计要求,Python中,流程控制语句语句主要有选择语句和循环语句,当然这里面还夹杂着在选择或者循环语句中可能是用到的跳转语句、条件语句、顺序语句等等用于细节处理的或者说程序跳转处理的语句。
1、选择语句
我们先从选择语句学习。选择语句顾名思义就是对程序流程执行方向的选择,相当于开车路过路口,向哪个目的方向走的问题,选择语句有if……语句,if……else……语句,if……elif……else语句以及这些语句之间的镶嵌使用。
if……语句:
if……语句的格式为:
if 条件表达式:
执行程序块
条件表达式如果是真,则执行下面的执行语句块;如果为假,则结束程序本程序块的执行。
我们看一个例子:
if a > b: #判断a是否大于b,如果大于执行c=a
c = a
程序块注意if条件后跟着有个英文的“:”,不写,写错为中文都会出现错误,在程序编写时需要多注意,以后的代码符号同样也是需要英文模式下编写。
if……else……语句:
if……else……语句的格式为:
if 条件表达式:
执行语句块1
else:
执行语句块2
条件表达式如果是真,执行语句块1;如果为假,执行语句块2。
我们看一个例子:
if a > b: #判断a是否大于b,如果真,c=a
c = a
else: #如果a小于b,执行else后语句块
c = b
程序块判断a和b哪个是最大值。
if……elif……else……语句:
if、elif、else三个或者中间增加elif语句,共同组成了这一个选择代码块,他们是一个整体,当if后面的条件满足时,执行相应的代码块后,便会结束整个选择代码块,如果不满足,则向下执行下面的,执行完结束整个选择代码块。
if 条件表达式1: #如果满足条件表达式1,执行程序块1,并结束本选择程序
执行程序块1
elif 条件表达式2: #如果不满足条件1,满足条件2,则执行程序块2,并结束选择程序
执行程序块2
elif 条件表达式3:
执行程序块3
……
else: #以上条件都不满足,执行程序块n
执行程序块n
我们看一个例子:
n = int(input()) #用n接收一个输入数字,输入的为字符串型,用int()转换为整数型
if n == 1: #判断n是否等于1,是的话,输出“我是1”,并结束本次选择代码块
print("我是1")
elif n == 2: #判断n是否等于2,是的话,输出“我是2”,并结束本次选择代码块
print("我是2")
elif n == 3:
print("我是3")
else: #如果以上判断都不对,则输出“我是其他数字”,并结束本次代码
print("我是其他数字")
if嵌套语句:
if语句可以随意嵌套使用,用法灵活,但是,需要注意层次结构,要牢记,相同空格或者Tab等符号标记不同代码块的层次结构,因此,要做好代码块的对应,避免层次结构错误造成功能实现错误,因为有时候,层次对应不对程序不会报错,但是最终结果可能不是想要的结果。
举个例子:
a = 2
b = 3
c = 4
if a > b:
m = a
if m > c:
n = c
elif c > a:
n = b
else;
n = a
else:
m = b
2、循环语句
循环语句顾名思义就是来满足某个条件,循环执行某个重复动作的语句,当然,这个循环过程必须是有条件的进行结束,不然,就会形成死循环,造成电脑的宕机。
循环语句主要有while循环和for循环,其中,可能会用到条件改变会跳出循环的break语句或者continue语句。
while语句:
while语句的格式为:
while 条件表达式:
循环体 #循环体是被重复执行的语句
条件表达式为真,执行循环体;如果为假,跳出循环。
我们看一个例子:
a = 1
b = 2
m = True
while m: #判断m为True,执行循环体内语句
if b > a:
a = a + 1
else: #判断,当b不大于a时,m赋值为False,结束循环
m = False
print(a)
注意到,我们在后面设置了m赋值为False的条件,从而结束了循环,不然就会出现死循环问题。
下面我们穿插介绍下break和continue语句,这两个语句称为跳转语句。
break语句是终止循环的意思,当运行到break语句时,就会跳出它所在的那个循环体的循环,特别注意,如果是在嵌套体中,break是结束的哪个循环体。实际应用中,break和continue与if语句一块使用的较多。
continue语句是跳过本次循环,进入下一次循环,只代表本次循环后面的语句不再执行,不是本次循环不执行,如果使用嵌套,只跳过所在那层循环的剩余语句。
另外,还有一个pass语句,起到一个占位的作用,什么也不做,pass代码位置留待以后编程使用,并能够在预留处防止产生错误。
先看一个pass的例子:
if a > b: #如果a大于b
pass #没有想好代码怎么样编写,先用pass占个位,防止出现错误
我们再来看break和continue的例子:
a = 1
b = 10
m = True
while m:
if b > a:
a = a + 1
if a == 3:
break #当b大于a,执行循环,当a = a+1等于3时,跳出整个循环
a = 1
b = 10
m = True
while m:
if b > a:
a = a + 1
if a == 3: #判断a是否等于3,等于的话,跳过本次循环,不会打印出数字3
continue
print(a)
else:
m = False
for语句:
for语句的格式为:
for 迭代对象中的变量 in 对象: #迭代对象中的变量就是指in后面对象中的元素
循环体
对象一般有两种情况,一种是数值的循环,一种是对元素的循环,分别举个例子:
数值的循环:
for i in range(10): #range(10)代表0~9
print(i)
range函数是Python内置函数,生成连续的整数,range的格式为:range(start,end,step),start为起始数值,可以省略,如果省略,代表从0开始;end代表结束数值,但不包括这个本数;step代表步长,指代两个数的间隔,如果省略代表步长为1。
元素的遍历:
元素是一个指代的集合,包括字符串、列表、元组、集合、字典等,用for循环都能够取出这个元素中的个体数据。上面提到的字符串、列表、元组、集合、字典等都是什么,我们将在下一节的课程进行介绍。
我们以字符串为例,简单介绍for循环的使用。
s = "人生苦短,我用Python"
for i in s: #通过for循环,我们便依次取出了“人”、“生”……“o”、“n”
print(i)
当然,我们也可以根据实际编程需要,嵌套if、for、while等一系列的语句来实现相应的功能。
下一节,我们将着重介绍序列的应用,序列就是刚才我们用元素所指代的字符串、列表、元组、集合、字典等结构。