在讲循环之前先介绍一下可迭代对象(列表、元组、字典、集合或者range()),其中迭代可理解为重复执行,我们的循环语句就是重复执行语句;也就是对可迭代对象的元素重复执行,直到所有的元素都执行一遍。
python里面进行循环控制的语句有for和 while,下面我们分别进行讲解。
1.for循环
1.1基本语法
for var in 可迭代对象:
程序代码块 #注意代码缩进
for循环一般是对可迭代对象进行遍历,然后对遍历的对象进行操作。
例如 我们一组有5人,想打印出来这5给人姓名,我们需要对人员进行遍历输出
my_list =['zhangsan', 'lisi', 'wangwu', 'yangliu','zhaoqi']
for person in my_list:
print(person)
输出结果:
zhangsan
lisi
wangwu
yangliu
zhaoqi
1.2强制退出for循环语句break
我们设计for循环时,如果满足某个条件时,循环终止,可以使用break指令,终止循环。
语法:
for 变量 in 可迭代对象:
代码块1
if 条件表达式:
代码块2:
beak # if条件满足之后 终止循序
代码块3 #for循环之外的代码块
举给例子,假如有个数据列表,我们要查一下是否有90这个数据,如果找到就结束查找。
data_list = [66, 79, 88, 90, 78,76,91]
for num in data_list:
print(num)
if num == 90: #如果找到90,结束循环,78,76和91这三个数据就不会打印
break
程序输出:
66
79
88
90
1.3暂停本次循环往下执行continue指令
使用for循环时,如果期待的某个条件发生时可以不往下继续执行循环内容,转而进行下一次循环,continue指令不会终止循环。语法格式:
for 变量 in 可迭代对象:
代码块1
if 条件表达式:
代码块2
continue #如果if条件表达式成立,执行continue 后 代码块3就不会执行
代码块3
举例来说,有个数据列表,我们统计一下奇数的个数
num_list = [11, 22, 33, 35, 24,12]
for num in num_list:
if num % 2 == 0:
continue #如果是偶数就不进行 下面的打印
print(str(num)+'是奇数')
程序输出:
11是奇数
33是奇数
35是奇数
1.4嵌套for循环
就是for循环内还有一个for循环,成为循环嵌套。如果外层循环有m个数据,内层循环有n个数据,则整个循环执行的次数是m*n次。
不妨看下9*9乘法表打印
for i in range(1, 10):
for j in range(1, i+1):
result = i*j
print("%d*%d=%-3d" %(i, j, result),end=" ") # %-3d每个输出预留3给空格,end="" 输出完空一格,不换行
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
2.while循环
while循环是当满足条件时会一直执行,直到条件为False时才停止,注意while循环一定要设置结束条件,否则会无限循环下去。
2.1语法
while 条件运算:
程序代码
我们使用for循环中的输出组内人名称的例子用while循环遍历,大家也可以比较下两个循环哪个更简洁些。
my_list =['zhangsan', 'lisi', 'wangwu', 'yangliu','zhaoqi']
num = 0
while num <= len(my_list): #当num大于my_list的长度时结束循环
print(my_list[num])
num += 1
程序输出:
zhangsan
lisi
wangwu
yangliu
zhaoqi
2.2break强制退出
基本语法:
while 条件运算:
程序代码1
if 条件运算:
程序代码2
break # if条件成立,执行break指令 程序代码3 就不会执行
程序代码3
同for循环中一样,循环中当期待的某个条件满足时,可以使用break指令强制终止循环。同样我们使用上面的例子,假如有个数据列表,我们要查一下是否有90这个数据,如果找到就结束查找。
data_list = [66, 79, 88, 90, 78,76,91]
index = 0
while index <= len(data_list):
if data_list[index] == 90:
print('找到90了,退出!')
break #t退出后 78,76,91数据不会输出
print('目前查到的数据是 %d' %(data_list[index]))
index += 1
程序输出:
目前查到的数据是 66
目前查到的数据是 79
目前查到的数据是 88
找到90了,退出!
2.3continue指令暂停本次循环向下执行
使用for循环时,如果期待的某个条件发生时可以不往下继续执行循环内容,转而进行下一次循环,continue指令不会终止循环。语法格式:
while 条件运算:
代码块1
if 条件运算符:
代码块2
continue # if条件成立,执行完 continue 后,代码块3 就不执行
代码块3
我们继续使用上面的例子输出奇数
num_list = [11, 22, 33, 35, 24,12]
len_num = 0
while len_num <= len(num_list):
if num_list[len_num] % 2 == 0:
len_num += 1 #如果是偶数 ,下面的输出和len_num +=1就不会执行,len_num值不会发生改变,会死循环
continue
print('%d 是奇数' %(num_list[len_num]))
len_num += 1
程序输出:
11 是奇数
33 是奇数
35 是奇数
2.4嵌套while循环
while的循环嵌套,就是while循环里面嵌套一个循环,语法:
while 条件运算:
代码块1 # 可以没有
while 条件运算:
代码块2
代码块3
举例依然是上面的例子,这次打印9*9乘法表:
i = 1
while i <= 9: # 当i大于9时跳出外层循环
j = 1
while j <= i: # 当j大于 i时跳出内层循环
result = i*j
print("%d*%d=%-3d" % (i, j, result), end=" ")
j += 1 # 内层循环加1
print()
i += 1 # 外层循环加1
程序输出:
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
好了本次循环控制语句就写完了,本文中已说了 break和continue指令,结束之际再说一个指令 pass,pass指令本身什么也不做,就是为了保持程序结构的完整性。