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

3.3.1 while语句

while语句用于在满足循环条件时重复执行某件事情,其流程如图3-6所示。从图中可以看出,当表达式的值为真时,执行相应的语句块(循环体),然后再判断表达式的值,如果为真,则继续执行语句块……当表达式的值为假时,检查其后面是否有else子句(因为可选,所以流程图未画出),如果有,则执行else子句;如果没有,则直接跳出while语句,执行其下面的语句。

图3-6 while循环结构流程图

书写格式:关键字while与表达式之间用空格隔开,表达式后接英文冒号,else子句与while子句左对齐,后接英文冒号,所有语句块左对齐,即语句块中的全部语句均缩进4个空格,如图3-7所示。

图3-7 while循环结构书写格式

例如:

本例中计次的初始值time为8,循环条件为计次小于12,循环体为输出“有效次数内”并使计次加1。每次循环判断计次,直到计次等于12时,输出“计次已满”并结束循环。

在使用while语句时,需要注意以下事项:

①与if语句类似,while语句的表达式可以是任意类型,如x!=y,x>3 or x<5,-5等。

②循环体中的语句块有可能一次也不执行,上例中若初始值time=13,则语句块不会执行。

③语句块可以是一条或多条语句,上例中while子句中的语句块为两条语句,else子句中的语句块为一条语句。

④while循环中的else子句可以省略,上例中若没有else子句,则当计次等于12时,while语句结束,程序继续执行while循环后面的语句。

⑤程序中需要包含使循环结束的语句,上例中若缺少语句time=time+1,则程序无法终止。

死循环:在while循环中,如果表达式的值恒真,循环将一直执行下去,无法靠自身终止,从而产生死循环。

例如:

书写程序时,有时要尽量避免死循环,但是在某些特定场合中死循环却具有十分重要的作用,如嵌入式编程、网络编程中等等。

【例3-9】编写程序,统计并输出1~1000以内所有能够同时被3和7整除的数字个数。

分析:循环变量的初始值为1,如果循环变量的值小于等于1000(满足循环进行的条件),则进入循环体使用if语句进行判断,然后循环变量自增1并进入下一轮循环,循环结束后输出统计结果。

代码如下:

【例3-10】编写程序,用下列公式计算π的近似值,直到最后一项的绝对值小于10-6为止。

分析:观察π的计算公式可知,循环变量的初始值为1,循环条件为循环变量的绝对值大于等于10-6,循环变量值的变化规律如上式所示,每项的分母比上一项增加2,符号与上一项相反。

代码如下: