1
Python编程从入门到实践
1.8.3.1 4.3.1 while语句
4.3.1 while语句

1.格式

2.功能

首先计算条件表达式(循环条件)的值,若结果为“真”(非零),则执行循环体语句;然后再次计算条件表达式的值。重复上述过程,直到表达式的值为“假”(零)时结束循环,流程控制转到循环结构的下一语句。其流程如图4-16所示。

【例4.10】从键盘上输入一个整数n,求n!,利用while语句编程实现。

图4-16 while语句流程图

程序如下:

运行结果如图4-17所示。

图4-17 运行结果

3.说明

①while循环结构的特点是“先判断,后执行”。如果条件表达式的值一开始就为“假”,则循环体一次也不执行。

②while条件表达式后面要加冒号;while循环体语句通过与while语句所在行形成缩进表达包含关系。

③循环体内一定要有改变循环继续条件的语句,使循环趋向于结束,否则循环将无休止地进行下去,即形成“死循环”。如例4.10中的语句i=i+1,使循环控制变量i每循环一次增加1,则最终会达到或超过终值,结束循环。

④为使循环能够正确开始运行,还要做好循环开始前的准备工作,如例4.10中的语句i=1和s=1分别将循环控制变量i和存放累乘积的变量s初始化。

【例4.11】从键盘上输入6个学生的成绩,对其进行处理:如果成绩及格,则输出“Passed”;否则,输出“Failed”。

问题分析:每个学生成绩的处理流程都是一样的,6个学生成绩的处理无非是对一个学生成绩处理流程进行6次重复,而每次只需输入一个学生成绩即可。设一个变量n,用来累计已处理完的学生个数,当处理完6个学生后,程序结束。

程序如下:

运行结果如图4-18所示。

图4-18 运行结果

【例4.12】利用格里高利公式求π:直到最后一项的绝对值小于等于10-6为止。

分析:总体来看,本题是一个“累加”问题,只不过每次要累加的数据一次是正数,一次是负数,因此,设置一个符号变量sign来控制每次要累加数据的符号。

程序如下:

运行结果如图4-19所示。

图4-19 运行结果

【例4.13】输入一个整数n(n≥3),判断是否为素数。

分析:根据素数的定义,若要判断一个整数n是否为素数,只需用2~n-1之间的每个数去除n,如果都除不尽,n就是素数;只要有一次除尽了,n就不是素数。数学方法已经证明了只需用(取整)去除n即可做出判定。

这里需要重复做的是用去除n,继续循环的条件是:“除数未增至并且未曾除尽过。”为此,需设一个开关变量flag,用于标识是否除尽。flag初值为1(“真”),一旦某一次除尽了,就将其置为0(“假”),从而终止循环。当循环结束时,若flag为“真”,就表明n是素数。

程序如下:

运行情况如图4-20所示。

图4-20 运行结果