Python的控制语句分为条件语句和循环语句。条件语句是指if语句,循环语句是指for语句和while语句。本节将主要介绍本书会经常用到的if语句、for语句及它们的嵌套使用。
if语句主要用于根据条件是否成立执行不同的操作,其基本语法格式如下:
1 if 条件: # 注意不要遗漏冒号 2 代码1 # 注意代码前要有缩进 3 else: # 注意不要遗漏冒号 4 代码2 # 注意代码前要有缩进
在代码运行过程中,if语句会判断其后的条件是否成立:如果成立,则执行代码1;如果不成立,则执行代码2。如果不需要在条件不成立时执行指定操作,可省略else以及其后的代码。
前面的学习其实已多次接触到if语句,这里再做一个简单演示,代码如下:
1 score = 85 2 if score >= 60: 3 print('及格') 4 else: 5 print('不及格')
因为变量score的值85满足“大于等于60”的条件,所以运行结果如下:
1 及格
如果有多个判断条件,可用elif(elseif的缩写)语句处理,演示代码如下:
1 score = 55 2 if score >= 80: 3 print('优秀') 4 elif (score >= 60) and (score < 80): print('及格') 5 else: 6 print('不及格')
因为变量score的值55既不满足“大于等于80”的条件,也不满足“大于等于60且小于80”的条件,所以运行结果如下:
1 不及格
for语句常用于完成指定次数的重复操作,其基本语法格式如下:
1 for i in 序列: # 注意不要遗漏冒号 2 要重复执行的代码 # 注意代码前要有缩进
演示代码如下:
1 class1 = ['李白', '王维', '孟浩然'] 2 for i in class1: 3 print(i)
在上述代码的执行过程中,for语句会依次取出列表class1中的元素并赋给变量i,每取一个元素就执行一次第3行代码,直到取完所有元素为止。因为列表class1有3个元素,所以第3行代码会被重复执行3次,运行结果如下:
1 李白 2 王维 3 孟浩然
这里的i只是一个代号,可以换成其他变量。例如,将第2行代码中的i改为j,则第3行代码就要相应改为print(j),得到的运行结果是一样的。
上述代码用列表作为控制循环次数的序列,还可以用字符串、字典等作为序列。如果序列是一个字符串,则i代表字符串中的字符;如果序列是一个字典,则i代表字典的键。
此外,Python编程中还常用range()函数创建一个整数序列来控制循环次数,演示代码如下:
1 for i in range(3): 2 print('第', i + 1, '次')
range()函数创建的序列默认从0开始,并且遵循“左闭右开”的规则:序列包含起始值,但不包含终止值。因此,第1行代码中的range(3)表示创建一个整数序列——0、1、2。
运行结果如下:
1 第 1 次 2 第 2 次 3 第 3 次
控制语句的嵌套是指在一个控制语句中包含一个或多个相同或不同的控制语句。可根据要实现的功能采用不同的嵌套方式,例如,for语句中嵌套for语句,if语句中嵌套if语句,for语句中嵌套if语句,if语句中嵌套for语句,等等。
先举一个在if语句中嵌套if语句的例子,演示代码如下:
1 math = 95 2 chinese = 80 3 if math >= 90: 4 if chinese >= 90: 5 print('优秀') 6 else: 7 print('加油') 8 else: 9 print('加油')
第3~9行代码为一个if语句,第4~7行代码也为一个if语句,后者嵌套在前者之中。这个嵌套结构的含义是:如果变量math的值大于等于90,且变量chinese的值也大于等于90,则输出“优秀”;如果变量math的值大于等于90,且变量chinese的值小于90,则输出“加油”;如果变量math的值小于90,则无论变量chinese的值为多少,都输出“加油”。因此,代码的运行结果如下:
1 加油
下面再来看一个在for语句中嵌套if语句的例子,演示代码如下:
1 for i in range(5): 2 if i == 1: 3 print('加油') 4 else: 5 print('安静')
第1~5行代码为一个for语句,第2~5行代码为一个if语句,后者嵌套在前者之中。第1行代码中for语句和range()函数的结合使用让i可以依次取值0、1、2、3、4,然后进入if语句,当i的值等于1时,输出“加油”,否则输出“安静”。因此,代码的运行结果如下:
1 安静 2 加油 3 安静 4 安静 5 安静