2.5.2 循环语句
循环语句允许我们多次执行一个语句或语句组,图2-8是在大多数编程语言中循环语句的一般形式。
图2-8 Python循环语句
Python支持for循环和while循环,如表2-12所示(Python中没有do...while...循环)。
表2-12 Python循环类型
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句,如表2-13所示。
表2-13 Python循环控制语句
1.while循环语句
Python中的while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件(condition): 执行语句(statements)……
执行语句可以是单个语句或语句块,判断条件可以是任何表达式,任何非零或非空(null)的值均为true。当判断条件为假(false)时,循环结束。执行流程图2-9所示。
图2-9 Python while循环
实例代码如下:
count = 0 while (count < 9): print ('The count is:', count ) count = count + 1 print ("Good bye!")
输出结果为:
The count is:1 The count is:2 The count is:3 The count is:4 The count is:5 The count is:6 The count is:7 The count is:8 Good bye!
while语句还有另外两个重要的命令continue、break来跳过循环,continue用于跳过该次循环,break则用于退出循环,后文会详细介绍。此外判断条件还可以是常值,表示循环必定成立,具体用法如下:
# continue 和 break 用法 i = 1 while i < 10: i += 1 if i%2 > 0: # 非双数时跳过输出 continue print (i) # 输出双数2、4、6、8、10 i = 1 while 1: # 循环条件为1必定成立 print (i) # 输出1~10 i += 1 if i > 10: # 当i大于10时跳出循环 break
如果条件判断语句永远为真,循环将会无限执行下去,实例如下:
var = 1 while var == 1 : # 该条件永远为true,循环将无限执行下去 num = raw_input("Enter a number :") print ("You entered: ", num) print ("Good bye!")
输出结果为:
Enter a number : 20 You entered: 20 Enter a number : 29 You entered: 29 Enter a number : 3 You entered: 3 Enter a number between :Traceback(most recent call last): File "test.py", line 5, in <module> num = raw_input("Enter a number :") KeyboardInterrupt
在Python中,while...else语句在循环条件为假时执行else语句块:
count = 0 while count < 5: print (count, " is less than 5") count = count + 1 else: print (count, " is not less than 5")
输出结果为:
0 is less than 5 1 is less than 5 2 is less than 5 3 is less than 5 4 is less than 5 5 is not less than 5
与if语句的语法类似,如果while循环体中只有一条语句,则可以将该语句与while写在同一行中,如下所示:
flag = 1 while (flag): print 'Given flag is really true!' print ("Good bye!")
2.for循环语句
Python中的for循环可以遍历任何序列的项目,如一个列表或一个字符串。for循环的语法格式如下:
for iterating_var in sequence: statements(s)
for循环的执行流程图如图2-10所示。
图2-10 Python for循环
实例代码如下:
for letter in 'Python': # 第一个实例 print ('当前字母 :', letter) fruits = ['banana', 'apple', 'mango'] for fruit in fruits: # 第二个实例 print ('当前水果 :', fruit) print ("Good bye!")
输出结果为:
当前字母 : p 当前字母 : y 当前字母 : t 当前字母 : h 当前字母 : o 当前字母 : n 当前字母 : banana 当前字母 : apple 当前字母 : mango Good bye!
另外一种遍历方式是通过索引实现,实例如下:
fruits = ['banana', 'apple', 'mango'] for index in range(len(fruits)): print ('当前水果 :', fruits[index]) print ("Good bye!")
输出结果为:
当前水果 : banana 当前水果 : apple 当前水果 : mango Good bye!
以上实例使用了内置函数len()和range(),函数len()返回列表的长度,即元素的个数,range()返回一个序列的数。
在Python中,for…else语句的for语句和普通的for语句没有区别,else语句会在循环正常执行完(即for不是通过break跳出而中断)的情况下执行,while...else语句也一样。
实例代码如下:
for num in range(10,20): # 迭代 10 到 20 之间的数字 for i in range(2,num): # 根据因子迭代 if num%i == 0: # 确定第一个因子 j=num/i # 计算第二个因子 print ('%d 等于 %d * %d' % (num,i,j)) break # 跳出当前循环 else: # 循环的 else 部分 print (num, '是一个质数')
输出结果为:
10 等于 2 * 5 11 是一个质数 12 等于 2 * 6 13 是一个质数 14 等于 2 * 7 15 等于 3 * 5 16 等于 2 * 8 17 是一个质数 18 等于 2 * 9 19 是一个质数
3.循环嵌套
Python语言允许在一个循环体中嵌入另一个循环。for循环嵌套的语法格式如下:
for iterating_var in sequence: for iterating_var in sequence: statements(s) statements(s)
while循环嵌套的语法格式如下:
while expression: while expression: statement(s) statement(s)
可以在循环体内嵌入其他循环体,如可以在while循环中嵌入for循环,也可以在for循环中嵌入while循环。
实例代码如下:
i = 2 while(i < 30): j = 2 while(j <= (i/j)): if not(i%j): break j = j + 1 if (j > i/j) : print (i, " 是素数") i = i + 1 print ("Good bye!")
输出结果为:
2是素数 3是素数 5是素数 7是素数 11是素数 13是素数 17是素数 19是素数 23是素数 29是素数 Good bye!
4.break语句
break语句用在while和for循环中,用于终止循环语句。如果使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。break语句的语法格式如下:
break
break语句流程图如图2-11所示。
图2-11 Python break语句流程图
for letter in 'Python': # 第一个实例 if letter == 'h': break print ('当前字母 :', letter) var = 10 # 第二个实例 while var > 0: print ('当前变量值 :', var ) var = var-1 if var == 5: # 当变量 var 等于 5 时退出循环 break print ("Good bye!")
输出结果为:
当前字母:P 当前字母:y 当前字母:t 当前变量值:10 当前变量值:9 当前变量值:8 当前变量值:7 当前变量值:6 Good bye!
5.continue语句
Python中的continue语句是跳出本次循环,而break语句是跳出整个循环。continue语句用在while和for循环中,用于跳过当前循环的剩余语句,然后继续进行下一轮循环。continue语句语法格式如下:
continue
continue语句的流程图如图2-12所示。
图2-12 Python continue语句流程图
实例代码如下:
for letter in 'Python': # 第一个实例 if letter == 'h': continue print ('当前字母 :', letter ) var = 10 # 第二个实例 while var > 0: var = var-1 if var == 5: continue print ('当前变量值 :', var ) print ("Good bye!")
输出结果为:
当前字母:n 当前变量值:9 当前变量值:8 当前变量值:7 当前变量值:6 当前变量值:4 当前变量值:3 当前变量值:2 当前变量值:1 当前变量值:0 Good bye!
6.pass语句
Python中的pass是空语句,目的是保持程序结构的完整性。pass语句不做任何事情,一般用作占位语句。pass语句的语法格式如下:
pass
实例代码如下:
for letter in 'Python': if letter == 'h': pass print ('这是 pass 块') print ('当前字母 :', letter) print ("Good bye!")
输出结果为:
当前字母:P 当前字母:y 当前字母:t 这是 pass 块 当前字母:h 当前字母:o 当前字母:n Good bye!