Python语言程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.6 Python的其他语句

循环语句一般会一直执行完所有的情况后自然结束,但是在有些情况下,需要停止当前正在执行的循环,也就是跳出循环。Python支持使用break语句跳出整个循环,使用continue语句跳出本次循环。

3.6.1 break语句

要立即退出循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。break语句用于控制程序流程,可使用它来控制哪些代码行执行,哪些代码行不执行,从而让程序按你的要求执行相应的代码。break语句用于跳出离它最近一级的循环,能够用于for循环和while循环中,通常与if语句结合使用,放在if语句代码块中。其格式如下:

例如,使用for循环遍历字符串Python,一旦遍历到字符t,就可以使用break语句跳出循环。示例代码如下。

【示例22】 for循环中使用break语句

以上代码使用for循环遍历字符串Python中的字符,当遍历到字符t时,满足if语句中的条件表达式,因此执行if语句中的break语句,跳出for循环。

程序运行结果:

break语句也可以用于while循环,其格式如下:

while循环中使用break语句的示例代码如下。

【示例23】 while循环中使用break语句

以上代码首先定义变量i与max,然后将“i<10”作为条件表达式,当i的值小于10时执行while循环中的代码块,每执行一次while循环i的值增加1。在while循环的代码块中包含if语句,该if语句判断变量i的值与变量max的值是否相等,如果相等则执行if语句中的break语句。程序运行结果:

例如,来看一个让用户指出他到过哪些地方的程序。在这个程序中,我们可以在用户输入quit后使用break语句立即退出while循环。

【示例24】 使用标志退出循环

以while True开头的循环(见❶)将不断运行,直到遇到break语句。这个程序中的循环不断输入用户到过的城市的名字,直到他输入quit为止。用户输入quit后,将执行break语句,导致Python退出循环:

注意

在任何Python循环中都可使用break语句。例如,可使用break语句来退出遍历列表或字典的for循环。

3.6.2 continue语句

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。continue语句用于跳出当前循环,继续执行下一次循环。当执行到continue语句时,程序会忽略当前循环中剩余的代码,重新开始执行下一次循环。

例如,从列表中找出所有的正数,代码如下。

【示例25】 continue语句

以上代码遍历列表[0,-2,5,7,-10]中的所有元素,每取出一个元素就判断该元素的值是否小于或等于0,当值小于或等于0时执行if语句中的continue语句,直接跳出本次循环,忽略剩下的循环语句,开始遍历列表中的下一个元素进行判断,直至取出所有的元素为止。

程序运行结果:

注意

若break语句位于循环嵌套结构中,该语句只会跳出离它最近的一级循环,外层的循环不会受到任何影响。break和continue语句只能用于循环中,不能单独使用。

例如,来看一个从1数到10,但只打印其中偶数的循环。

【示例26】 continue语句2

我们首先将current_number设置成了0,由于它小于10,Python进入while循环。进入循环后,我们以步长为1的方式往上数(见❶),因此current_number为1。接下来,if语句检查current_number与2的求模运算结果。如果结果为0(意味着current_number可被2整除),就执行continue语句,让Python忽略余下的代码,并返回到循环的开头。如果当前的数字不能被2整除,就执行循环中余下的代码,Python将这个数字打印出来:

3.6.3 pass语句

Python中的pass是空语句,它的出现是为了保持程序结构的完整性。pass不做任何事情,一般用作占位语句。pass语句的使用如示例27所示。

【示例27】 pass语句

在示例中,当程序执行pass语句时,由于pass是空语句,程序会忽略该语句,按顺序执行其他语句。程序的运行结果如下所示。

3.6.4 else语句

前面在学习if语句的时候,会在if条件语句的范围之外发现else语句。其实,除了判断语句,Python中的while和for循环中也可以使用else语句。在循环中使用时,else语句只在循环完成后执行,也就是说,break语句也会跳过else语句块。

利用else语句实现一个变量与5进行比较,比5小显示“is less than 5”,否则输出“is not less than 5”,代码如示例28所示。

【示例28】 else语句

在示例中,定义了一个变量count,它的初始值为0。接着执行while语句判断条件,由于count的值小于5,所以条件成立,执行while循环使得count的值变成1,以此类推。直到count的值为5时,循环条件不成立,结束整个循环,程序会执行else语句里面的代码。程序的运行结果如下所示。

3.6.5 技能训练

上机练习14猴子与桃

需求说明

公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,在剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?

上机练习15猜数游戏

需求说明

猜数游戏是一个古老的密码破译类、益智类小游戏,通常由两个人参与,一个人设置一个数字,一个人猜数字,当猜数字的人说出一个数字,由出题的人告知是否猜中:若猜测的数字大于设置的数字,出数字的人提示“很遗憾,你猜大了”;若猜测的数字小于设置的数字时,出题的人提示“很遗憾,你猜小了”;若猜数字的人在规定的次数内猜中设置的数字,出题的人提示“恭喜你,猜数成功”。

编写程序,实现遵循上述规则的猜数字游戏,并限制猜数机会只有5次。

本章总结

本章主要介绍了Python流程控制,包括if语句、if语句的嵌套、循环语句、循环嵌套以及跳转语句。其中,对if语句主要介绍了if语句的格式,在循环语句中主要介绍了for循环和while循环,跳转语句主要介绍了break语句和continue语句。通过本章的学习,希望读者能够熟练掌握Python流程控制的语法,并灵活运用流程控制语句进行程序开发。

本章作业

一、填空题

1.流程图是描述____________的常用工具。

2.当循环结构的循环体由多个语句构成时,必须用____________的方式组成一个语句块。

3.Python中的循环语句有____________循环和____________循环。

4.Python中使用关键字____________表示条件语句。

5.当if条件表达式为____________才会执行满足条件的语句。

二、判断题

1.Python中break和continue语句可以单独使用。( )

2.if…else语句可以处理多个分支条件。( )

3.for循环嵌套就是在for循环中再加一个for循环。( )

4.if语句最多可以嵌套两层。( )

三、选择题

1.下面不属于程序的基本控制结构的是( )。

A.顺序结构

B.选择结构

C.循环结构

D.输入输出结构

2.在Python中,实现多分支选择结构的较好方法是( )。

A.if

B.if…else

C.if…elif…else D.if嵌套

3.关于while循环和for循环的区别,下列叙述中正确的是( )。

A.while语句的循环体至少无条件执行一次,for语句的循环体有可能一次都不执行

B.while语句只能用于循环次数未知的循环,for语句只能用于循环次数已知的循环

C.在很多情况下,while语句和for语句可以等价使用

D.while语句只能用于可迭代变量,for语句可以用任意表达式表示条件

4.下列关于for循环的描述,说法正确的是( )。

A.for循环可以遍历可迭代对象

B.for循环不能使用循环嵌套

C.for循环不可以与if语句一起使用

D.for循环可以遍历数据,但不能控制循环次数

5.下列语句中用于跳出循环体的语句是( )。

A.continue

B.break

C.if

D.while

四、简答题

1.流程控制语句有几种?简述你对每种流程控制语句的理解。

2.请写出嵌套if控制语句的语法和流程图。

3.说明以下三个if语句的区别。

语句一:

语句二:

语句三:

4.下面的循环会打印多少次“I Love Python”?

五、编程题

1.餐馆订位:编写一个程序,询问用户有多少人用餐。如果超过8人,就打印一条消息,指出没有空桌;否则指出有空桌。

2.10的整数倍:让用户输入一个数字,并指出这个数字是否是10的整数倍。

3.编写程序,输入两个数,比较它们的大小并输出其中较大者。

4.使用for循环输出1+2+3+…+100的结果。

5.使用while循环输出100以内的偶数。