第5章 循环
5.1分析下面的代码。在A、B、C处count<100总为true,总为false,还是有时true有时false? Count = 0
While count < 100:
#A
Print ‘’pramming is fun! Count += 1 #B #C
答:A处一直为true,B处有时为真有时为假,C处一直为假。
5.2如果把程序清单5-3中的第8行的guess初始化为0,错在哪里? 答:产生的随机数有可能为0,此时循环将不会执行。
5.3下边的循环体被重复了多少次?每次循环的输出结果是多少? 答:a、循环体被重复无限次,没有输出结果;
B、循环体被重复无限次,没有输出结果;
c、循环体被执行了9次,输出结果为2\\n 4\\n 6\\n 8(4行) 5.4指出下面代码的错误:
答:a、b均为死循环,c没有循环体。 5.5假设输入值为“2 3 4 5 0”(每行一个数),下面代码的输出结果是什么? 答:5 0(每行一个数) 5.6假设输入值为“2 3 4 5 0”(每行一个数),下面代码的输出结果是什么? 答:14 4(每行一个数)
5.7你能把任何一个for循环转换为while循环吗?列出for循环的优点。
答:可以。For循环的优点是更加简洁和可实现性。编译器产生的代码可以比while循环更高效的执行。
5.8将下面的for循环转换为while循环。
Sum = 0 答:sum = 0 For i in range(1001): i = 0
Sum = sum + i while i < 1001: Sum = sum + i
i += 1 5.9你能将任意的while循环转换成for循环吗?将下面这个while循环转换成for循环。 i = 1 答:sum = 0 Sum = 0 for i in range(1, 1000): While sum < 1000: sum = sum + i
Sum = sum + i i +=1
5.10统计下面循环的迭代次数:
答:a、n次 b、n次 c、n - 5 d、ceil((n - 5) / 3)
5.12如果你知道一个数n1的公约数不可能大于n1/2,你就可以试图使用下面的循环来改善你的程序: K = 2
While k <= n1 / 2 and k <= n2 / 2:
If n1 % k == 0 and n2 % k ==0: gcd = k K += 1
这个程序是错误的,你能找出原因吗?
答:当n1=3,n2=3时,程序找出的最大公约数是1,与正确答案不符。
5.13关键字break的作用是什么?关键字continue的作用是什么?下面这个程序会终止吗?如果会,请给出程序运行的结果。
答:a、break语句会跳出整个循环;这个程序会终止,结果为1
B、continue语句只是退出循环的当前迭代;这个程序不会终止。
5.14左边的for循环被转换成右边的while循环,哪里出了错误?请改正。
答:如果一个继续的语句在一个循环中被执行,则该迭代的其余部分被跳过,然后每一次迭代后的动作被检查,并检查循环的运行状态。如果一个继续语句在一段时间内被执行,则该迭代的其余部分被跳过,然后检查循环继续条件。
5.15不使用break和continue语句改写程序清单5-11和5-12的程序testbreak.py和tesecontinue.py。 答:Testbreak.py Sum = 0 Number = 0
While number < 20 and sum >= 100:
Number += 1’ Sum += number
Print ‘the number is ’,number Print ‘the sum is ’,sum
Tesecontinue.p Sum = 0 Number = 0
While number < 20 :
Number += 1
If number != 10 and nember != 11:
Sum += number
Print ‘the sum is ’, sum
本章总结
1.两种类型的循环语句:while循环和for循环。 2.循环中需要被重复执行的语句被称为循环体。 3.循环体的一次执行被叫做循环的一次迭代。
4.一个无限循环是指循环体的语句无限次的被执行。
5.再设计一个循环时,你不仅仅要考虑循环控制结构还要考虑循环体。
6.While循环首先检查循环继续条件。如果条件为真,则执行循环体;否则,循环终止。 7.哨兵值是一个特殊的值,它表明输入值的结束。
8.For循环是计数器控制的循环,循环体执行可预见次数遍。 9.Break和continue两个关键字都可以被用在循环中。 10.Break关键字立即结束包含这个break的最内层循环。 11.Continue只终结当前迭代。
相关推荐: