4.3 循环结构

4.3.1 for循环与while循环

Python主要有for循环和while循环两种形式的循环结构,多个循环可以嵌套使用,也可以和选择结构嵌套使用来实现复杂的业务逻辑。

在Python中,循环结构可以带else子句,其执行过程为:如果循环因为条件表达式不成立或序列遍历结束而自然结束时则执行else结构中的语句,如果循环是因为执行了break语句而导致循环提前结束则不会执行else中的语句。while循环和for循环的完整语法形式分别如下。

while条件表达式:

循环体

[else:

else子句代码块]

for取值in序列或迭代对象:

循环体

[else:

else子句代码块]

其中,方括号内的else子句可以没有,也可以有,根据要解决的问题来确定。

例4-5 编写程序,输出1~100之间能被7整除但不能同时被5整除的所有整数。

    1.  for i in range(1, 101):
    2.      if i%7==0 and i%5! =0:
    3.         print(i)

例4-6 编写程序,打印九九乘法表。

基本思路:内循环中对于范围的控制,j的范围不超过i的值;第3行代码中的format是字符串格式化的方法,可以查阅7.4.2节。

    1.  for i in range(1, 10):
    2.      for j in range(1, i+1):
    3.         print('{0}*{1}={2}'.format(i, j, i*j), end='  ')
    4.      print()                   #打印空行

运行结果:

    1*1=1
    2*1=2  2*2=4
    3*1=3  3*2=6  3*3=9
    4*1=4  4*2=8  4*3=12  4*4=16
    5*1=5  5*2=10  5*3=15  5*4=20  5*5=25
    6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36
    7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49
    8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64
    9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81

4.3.2 break与continue语句

break语句和continue语句在while循环和for循环中都可以使用,并且一般常与选择结构或异常处理结构结合使用。一旦break语句被执行,将使得break语句所属层次的循环提前结束;continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。

例4-7 编写程序,计算小于100的最大素数。

基本思路:在下面的代码中,内循环用来测试特定的整数n是否为素数,如果其中的break语句得到执行则说明n不是素数,并且由于循环提前结束而不会执行后面的else子句。如果某个整数n为素数,则内循环中的break语句不会执行,内循环自然结束后执行后面else子句中的语句,输出素数n之后执行break语句跳出外循环。

   1.  for n in range(100, 1, -1):
   2.      if n%2 == 0:
   3.         continue
   4.      for i in range(3, int(n**0.5)+1, 2):
   5.         if n%i == 0:
   6.             #结束内循环
   7.             break
   8.      else:
   9.         print(n)
  10.         #结束外循环
  11.         break

运行结果:

  97