while语句
在while语句中,当条件表达式为True时,就重复执行语句块;当条件表达式为False时,就结束执行语句块。while语句的语法格式如下:
while 条件表达式:
语句块 # 此处语句块也称循环体
while语句中循环体是否执行,取决于条件表达式是否为True。当条件表达式为True时,循环体就会被执行,循环体执行完毕后继续判断条件表达式,如果条件表达式为True,则会继续执行,直到条件表达式为False时,整个循环过程才会执行结束。while语句的执行流程,如下图所示。

接下来演示while语句的用法,如下所示。
1 i, sum = 1, 0
2 while i < 101:
3 sum += i
4 i += 1
5 print("1 + 2 + ··· + 100 = %d"%sum)
运行结果如下图所示。

在上例中,程序功能是实现1到100的累加和。当i=1时,i<101,此时执行循环体语句块,sum为1,i为2。当i=2时,i<101,此时执行循环体语句块,sum为3,i为3。以此类推,直到i=101,不满足循环条件,此时程序执行第5行代码。
for语句
for语句可以循环遍历任何序列中的元素,如列表、元组、字符串等,其语法格式如下:
for 元素 in 序列:
语句块
其中,for、in为关键字,for后面是每次从序列中取出的一个元素。接下来演示for语句的用法,如下所示。
1 for word in "Python":
2 print(word)
运行结果如下图所示。

在上例中,for语句将字符串中的每个字符逐个赋值给word,然后通过print()函数输出。
当需要遍历数字序列时,可以使用range()函数,它会生成一个数列,接下来演示其用法,如下所示。
1 sum = 0
2 for i in range(1, 101):
3 sum += i
4 print("1 + 2 + ··· + 100 = %d"%sum)
运行结果如下图所示。

在上例中,通过range()函数可以生成一个1到100组成的数字序列,当使用for遍历时,依次从这个数字序列中取值。
while与for嵌套
while语句中可以嵌套while语句或for语句,接下来演示while语句中嵌套while语句,如下所示。
1 i = 1
2 while i < 10:
3 j = 1
4 while j <= i:
5 print("%d×%d = %-3d"%(i, j, i*j), end = ' ')
6 j += 1
7 i += 1
8 print(end = '\n')
运行结果如下图所示。

在上例中,第2行到第8行为外层while循环,第4行到第6行为内层while循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j = i*j。
接下来演示while语句中嵌套for语句,如下所示。
1 i = 1
2 while i < 10:
3 for j in range(1, i + 1):
4 print("%d×%d = %-3d"%(i, j, i*j), end = ' ')
5 i+= 1
6 print(end = '\n')
运行结果如下图所示。

在上例中,第2行到第6行为外层while循环,第3行到第4行为内层for循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j = i*j。
此外,for语句中可以嵌套while语句或for语句,接下来演示for语句中嵌套while语句,如下所示。
1 for i in range(1, 10):
2 j = 1
3 while j <= i:
4 print("%d×%d = %-3d"%(i, j, i*j), end = ' ')
5 j += 1
6 print(end = '\n')
运行结果如下图所示。

在上例中,第1行到第6行为外层for循环,第3行到第5行为内层while循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j = i*j。
接下来演示for语句中嵌套for语句,如下所示。
1 for i in range(1, 10):
2 for j in range(1, i + 1):
3 print("%d×%d = %-3d"%(i, j, i*j), end = ' ')
4 print(end = '\n')
运行结果如下图所示。

在上例中,第1行到第4行为外层for循环,第2行到第3行为内层for循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j = i*j。
网友评论