3.3 循环:while
循环结构通常有这个过程:
(1)验证条件是否成立,如果成立则进入第(2)步,否则退出循环;
(2)执行被控制的代码,回到第(1)步;
while语句是其中一种比较常用的循环语句,其形式和if语句非常类似。while语句语法如下:
while 条件: 语句(1)条件是一个布尔值;
(2)条件成立就执行语句,执行完后再验证条件是否成立,如果不成立则循环结束,否则将一直重复执行下去。
(3)通常使用一个整数变量来控制循环次数。
(4)如果条件永远成立,那么循环很可能执行下去不会停止。称之为“死循环”。
下面是一个循环的例子,当进入while时,首先进行条件判断(i>0是否成立),如果成立,那么进入循环,执行大括号里面的代码(打印,i自减1);然后回去再次测试条件(i大于0),如果成立,又重复执行大括号里面的代码,此过程不停重复直到条件不成立,否则,将一直循环下去。这几条语句将打印10、9、8…3、2、1。
i=10while i > 0: print(i) i=i-1注意上面出现在while条件里的变量i,它实际上控制了循环的次数,我们把这样的变量称为循环变量。
i是怎么控制循环次数的?
观察条件i>0,如果i大于0,那么此条件成立,同时注意到,while控制的代码里面有一条i=i-1,也就是说,每执行一次循环,i的值就减少1,这样达到一定的循环次数(10次),就会使得i>0这个条件不成立。这个时候,循环就结束了。
假如循环的条件永远成立,那么这个循环就不会结束!这种称为死循环。
例如下面的例子,i的值是10,条件是i>0,那么将进入循环,然而循环每次都会将i增加1,这就意味着i>0永远成立了!实际执行这段代码,i的值会一直增加然后打印,直到i的值到达上限再增加1,发生溢出变成负数!
#死循环i=10while i > 0: print(i) i=i+1循环变量通常是增加1或者减少1,但不是绝对的,例如下面的例子,i每次增加2,它将打印0,2,4,6,8,这样循环就只有5次了。
i=0
while i < 10:
print(i)
i+=2
练习题
-
打印1.使用while循环打印10到0,包括10和0 (10分) [编程]2.如果把i-=1和print(i)这两句换一下,将打印什么? (2分) [选择]A.
B. 没有变化
C. 语法错误
D. 10 9 8 7 6 5 4 3 2 1
E. 9 8 7 6 5 4 3 2 1 0<code><div class='codeNewLine'>i=10</div><div class='codeNewLine'><span class='keyword'>while</span> i <span>></span> 0:</div><div class='codeNewLine'> i-=1</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div></code>3.循环打印10、9、8…1、0、-1 (10分) [编程]4.循环打印1、2、3…7、8、9、10 (10分) [编程] -
写出下列循环的次数1. (2分) [填空]2. (2分) [填空]3. (2分) [填空]4. (2分) [填空]5. (2分) [填空]6. (2分) [填空]7. (2分) [填空]8. (2分) [填空]
-
下列每一小题的代码都试图打印1到10,选择正确的答案1. (2分) [选择]A.
B. 正确打印
C. 语法错误
D. 语法没错误,不是死循环但不能正确打印
E. 死循环<code><div class='codeNewLine'>i=1</div><div class='codeNewLine'><span class='keyword'>while</span> i >= 0:</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div><div class='codeNewLine'>i=i+1</div></code>2. (2分) [选择]A.
B. 正确打印
C. 语法错误
D. 语法没错误,不是死循环但不能正确打印
E. 死循环<code><div class='codeNewLine'>i=1</div><div class='codeNewLine'><span class='keyword'>while</span> i >= 10:</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div><div class='codeNewLine'> i=i+1</div></code>3. (2分) [选择]A.
B. 正确打印
C. 语法错误
D. 语法没错误,不是死循环但不能正确打印
E. 死循环<code><div class='codeNewLine'>i=1</div><div class='codeNewLine'><span class='keyword'>while</span> i <= 10:</div><div class='codeNewLine'> i=i+1</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div></code> -
填空题1.打印1、2、3……一直到100 (4分) [编程填空]
<code><div class='codeNewLine'>i=1</div><div class='codeNewLine'><span class='keyword'>while</span> :</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div><div class='codeNewLine'> </div></code>2.打印100以内(包括100)的偶数 (6分) [编程填空]在打印1到100的基础上,在循环里增加一个条件,按条件打印<code><div class='codeNewLine'>i=1</div><div class='codeNewLine'><span class='keyword'>while</span> :</div><div class='codeNewLine'><span class="comments">#i是偶数的时候,打印 </span></div><div class='codeNewLine'> <span class='keyword'>if</span> :</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div><div class='codeNewLine'> </div></code>3.打印100、99、98……一直到1 (4分) [编程填空]<code><div class='codeNewLine'>i=100</div><div class='codeNewLine'><span class='keyword'>while</span> :</div><div class='codeNewLine'> <span class='pyFunction'>print</span>(i)</div><div class='codeNewLine'> </div></code> -
编程题1.打印1到10,然后10到1,10只出现一次。 (10分) [编程]提示:使用两个while循环2.(*)输入一个整数k,然后打印k个“ok” (10分) [编程]提示:i初值为0,循环条件i<10,每次i加1那么就循环10次,用输入的整数k取代那个10,就循环k次3.从小到大打印100(包括100)以内的偶数。 (10分) [编程]4.打印100以内7的倍数 (10分) [编程]5.(**)输入一个整数k,然后打印出它所有因子。 (10分) [编程]提示:在循环内部使用一个if语句,用求余作为条件。
每个i从1开始,k对i求余,如果是0,说明i是一个因子,打印i。i每次加1直到i等于k-1,因为i等于k不必判断了,因子是不包括本身的。6.求1+2+3+…+100的值,并打印出最终的和 (10分) [编程]1+2+3+……+99+100是循环的经典题目。
循环可以轻松做到,设定i的值为1,在循环外定义好一个变量(例如sum),它的初值是0
每次循环,都把i的值加入到sum,使得sum的值增加i,然后重复这个循环,直到i的值大于了100
最后sum的值就是累加的和7.计算总和以及平均值 (10分) [编程]循环5次,每次循环输入一个整数,把这个数字赋给整型变量k,最后打印总和和平均值(两个值打印各占一行,先打印总和再打印平均值)。
提示:把输入语句放到循环内部。8.(***)循环次数不确定的循环 (10分) [编程]重复此行为:输入一个字符c,并打印出“你输入的是X”(X是刚才输入的字符,例如输入字母a,那么打印“你输入的是a”)。
直到输入’#’才结束(当输入#的时候,没有输出直接结束)。
提示:输入一个字符,然后循环的条件就是这个字符是否等于’#’,如果不等于那么用“你输入的是X”的格式打印该字符,然后重新要求输入一个字符(也就是循环内有一条输入语句),以此循环。9.(**)输出所有3位“水仙花数”。 (10分) [编程]所谓“水仙花数”是指这样的数字:它的每个数位的立方和等于该数字本身。例如153是一个水仙花数,因为153=1*1*1+3*3*3+5*5*5。
提示:求个位用对10求余,求百位直接除以100,求十位自行考虑。10.(****)四位数也有水仙花数,定义是这样的: (10分) [编程]四位数水仙花数是这样的一个四位数,它的每个数位的四次方和等于该数字本身。
即个位数的四次方+十位数的四次方+百位数的四次方+千位数的四次方等于该数本身
打印所有四位数的水仙花数。