目录
3.1 条件语句
条件语句可以给定一个判断条件,并在程序执行过程中判断该条件是否成立。程序根据判断结果执行不同的操作,这样就可以改变代码的执行顺序,从而实现更多功能。例如,用户登录某电子邮箱软件,若帐号与密码都输入正确,则显示登录成功界面,否则显示登录失败界面,具体如图所示。
Python中的条件语句有if语句、if-else语句和if-elif语句。接下来将针对这些条件语句进行详细讲解。
3.1.1 if语句
if语句用于在程序中有条件的执行某些语句,其语法格式如下:
如果条件表达式的值为True,则执行其后的语句块,否则不执行该语句块。if语句的执行流程如图所示。
接下来演示if语句的用法,如例所示。
如果将变量score的值改为50,则运行结果如图所示。
在例中,第2行判断socre的值是否大于或等于60。如果socre的值大于或等于60,执行第3行,否则不执行第3行。程序执行完if语句后,接着执行第4行代码。
3.1.2 if-else语句
在使用if语句时,它只能做到满足条件时执行其后的语句块。如果需要在不满足条件时执行其他语句块,则可以使用if-else语句。
if-else语句用于根据条件表达式的值决定执行哪块代码,其语法格式如下:
如果条件表达式的值为True,则执行其后的语句块1,否则执行语句块2。if-else语句的执行流程如图所示。
接下来演示if-else语句的用法,如例所示。
如果将变量score的值改为50,则运行结果如图所示。
在例中,第2行判断socre的值是否大于或等于60,如果socre的值大于或等于60,则执行第3行,否则执行第5行。程序执行完if-else语句后,接着执行第6行代码。
3.1.3 if-elif语句
生活中经常需要进行多重判断,例如,考试成绩在90100区间内,称为成绩爆表;在8090区间内,称为成绩优秀;在60~80区间内,称为成绩及格;低于60的称为成绩堪忧。
在程序中,多重判断可以通过if-elif语句实现,其语法格式如下:
当执行该语句时,程序依次判断条件表达式的值,当出现某个表达式的值为True时,则执行其对应的语句块,然后跳出if-elif语句继续执行其后的代码。
if-elif语句的执行流程,如图所示。
接下来演示if-elif语句的用法,如例所示。
此外,if-elif语句后还可以使用else语句,用来表示if-elif语句中所有条件不满足时执行的语句块,其语法格式如下:
接下来演示if-elif-else语句的用法,如例所示。
3.1.4 if语句嵌套
if语句嵌套是指if、if-else中的语句块可以是if或if-else语句,其语法格式如下:
注意if语句嵌套有多种形式,在实际编程时需灵活使用。
接下来演示if嵌套语句的使用,如例所示。
3.2 循环语句
循环的意思就是让程序重复地执行某些语句。在实际应用中,当碰到需要多次重复地执行一个或多个任务时,可考虑使用循环语句来解决。循环语句的特点是在给定条件成立时,重复执行某个程序段。通常称给定条件为循环条件,称反复执行的程序段为循环体。
3.2.1 while语句
在while语句中,当条件表达式为True时,就重复执行语句块;当条件表达式为False时,就结束执行语句块。while语句的语法格式如下:
while语句中循环体是否执行,取决于条件表达式是否为True。当条件表达式为True时,循环体就会被执行,循环体执行完毕后继续判断条件表达式,如果条件表达式为True,则会继续执行,直到条件表达式为False时,整个循环过程才会执行结束。while语句的执行流程,如图所示。
接下来演示while语句的用法,如例所示。
运行结果如图所示。
3.2.2 for语句
for语句可以循环遍历任何序列中的元素,如列表、元组、字符串等,其语法格式如下:
其中,for、in为关键字,for后面是每次从序列中取出的一个元素。接下来演示for语句的用法,如例所示。
当需要遍历数字序列时,可以使用range()函数,它会生成一个数列,接下来演示其用法,如例所示。
3.2.3 while与for嵌套
while语句中可以嵌套while语句或for语句,接下来演示while语句中嵌套while语句,如例所示。
接下来演示while语句中嵌套for语句,如例所示。
此外,for语句中可以嵌套while语句或for语句,接下来演示for语句中嵌套while语句,如例所示。
接下来演示for语句中嵌套for语句,如例所示。
3.2.4 break语句
break语句可以使程序立即退出循环,转而执行该循环外的下一条语句。如果break语句出现在嵌套循环中的内层循环中,则break语句只会跳出当前层的循环。
接下来演示break语句的用法,如例所示。
运行结果如图所示。
3.2.5 continue语句
continue语句用于跳过当前循环体中剩余的语句,然后进行下一次循环。接下来演示其用法,如例所示。
运行结果如图所示。
3.2.6 else语句
else语句除了可以与if语句搭配使用外,还可以与while语句、for语句搭配使用,当条件不满足时执行else语句块,它只在循环结束后执行。接下来演示for语句搭配else语句用法,如例所示。
此处需要注意,while语句或for语句中有break语句时,程序将会跳过while语句或for语句后的else语句,接下来演示这种情形,如例所示。
3.2.7 pass语句
在编写一个程序时,如果对部分语句块还没有编写思路,这时可以用pass语句来占位。它可以当作一个标记,表示未完成的代码块。
接下来演示pass语句的用法,如例所示。
运行结果如图所示。
在例中,当执行pass语句时,程序会忽略该语句,按顺序执行其他语句。
3.3 小案例
3.3.1 案例一
“鸡兔同笼问题”是我国古算书《孙子算经》中著名的数学问题,其内容是:“今有雉(鸡)兔同笼,上有三十五头,下有九十四足,问雉兔各几何”。具体实现如例所示。
for chicken in range(0,36):
if 2 * chicken + (35 - chicken) * 4 == 94:
print("小鸡:",chicken,"小兔",35 - chicken)
3.3.2 案例二
程序输入若干个学生某门课程成绩,求出这些学生成绩的平均值、最大值和最小值,具体实现如例所示。
num = 0
sum = 0
max = 0
min = 100
while True:
str = input("请输入第%d位学生成绩:"%(num + 1))
if str == "Q":
print("输入结束!")
break
score = int(str)
if score < 0 or score > 100:
print("输入有误,请重新输入!")
continue
sum += score
num += 1
if score > max:
max = score
if score < min:
min = score
print("平均成绩:",sum * 1.0 / num)
print("最大值:",max,"最小值",min)
本章小结
通过本章的学习,大家需熟练掌握条件语句与循环语句的使用,当需对某种条件进行判断,并且为真或为假时分别执行不同的语句时,可以使用if语句。当需要检测的条件很多,可以使用if-else语句。当需重复执行某些语句,并且能够确定执行的次数时,可以使用for语句;假如不能确定执行的次数,可以使用while语句。另外,continue语句可以使当前循环结束,并从循环的开始处继续执行下次循环,break语句会使循环直接结束。