一、循环概念
循环:
反复做同一件事情的情况,成为循环
循环结构流程图:
二、循环的分类:
- while
- for-in
三、while循环
while循环语法结构:
while 条件表达式:
条件执行体(循环体)
选择结构的if与循环结构的while的区别:
if是判断一次,条件为True执行一次
while是判断N+1次,条件为True执行N次
举例:
#while循环,输出1-10之间的正整数 a=1 while a<=10: print(a) a+=1
执行结果如下:
练习1:输出0-4志坚正整数的累加和
#0-4的累加和 a=0 sum=0 while a<=4: sum+=a a+=1 print('和为:',sum)
执行结果为:
练习2:计算1-100之间偶数的和
#计算1-100之间偶数的和
a=1
sum=0
while a<=100:
if a%2==0: #可以写成if not bool(a%2):
sum+=a
a+=1
print('和为:',sum)
执行结果如下:
练习3:计算1-100之间奇数的和
#计算1-100之间奇数的和
a=1
sum=0
while a<=100:
if bool(a%2):
sum+=a
a+=1
print('和为:',sum)
执行结果如下:
四、for-in循环
for-in循环
- in表达从(字符串、序列等)中依次取值,又称为遍历
- for-in遍历的对象必须是可迭代对象
for-in的语法结构:
for自定义的变量 in 可迭代对象:
循环体
for-in的执行图:
*循环体内不需要访问自定义变量,可以将自定义变量替代为下划线
举例:
举例1:输出“Pyhton”中的每个字符
#for-in循环 for item in 'Python': print(item)
执行结果如下:
举例2:输出range函数中的所有值
for i in range(10): print(i)
执行结果如下:
举例3:用'_'代替自定义变量
#如果在循环体中,不需要自定义变量,可以将自定义变量可以用'_'代替 for _ in range(3): print('ABC')
执行结果如下:
解析:执行了3次print方法
举例4:计算1-100之间偶数的和
#计算1-100之间偶数的和
sum=0
for i in range(1,101):
if i%2==0:
sum+=i
print(sum)
执行结果如下:
练习:要求输出100-999之间的水仙花数 举例:153=3*3*3+5*5*5+1*1*1
for item in range(100,1000): ge=item%10 #个位数 shi=item//10%10 #十位 bai=item//100 #print(bai,shi,ge) #判断 if ge**3+shi**3+bai**3==item: print(item)
执行结果如下:
五、break语句
break语句:
- 用于结束循环结构,通常与分支结构if一起使用
举例:验证密码输入3次,当密码输入正确时使用break停止循环
#break退出循环 for item in range(3): pwd=input('请输入密码:') if pwd=='8888': print('密码正确') break else: print('密码错误,请重新输入')
执行结果如下:
解析:当密码输入不正确时,会进入下一轮循环,当密码正确时break跳出循环
本例还可以用while来写:
a=0 while a<3: pwd=input('请输入密码:') if pwd=='8888': print('密码正确') break else: print('密码错误,请重新输入') a+=1
结果同上
六、流程控制语句continue
continue语句
- 用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
举例:要求输出1到50之间所有5的倍数,即和5的余数为0的都是5的倍数,与5的余数不为0的数不是5的倍数
#要求输出1到50之间所有5的倍数,即和5的余数为0的都是5的倍数,与5的余数不为0的数不是5的倍数 for item in range(1,51): if item%5==0: print(item)
执行结果如下:
下面,我们使用continue语句来重写上面的例子:
#使用conitnue语句 for item in range(1,51): if item%5!=0: continue print(item)
执行结果如下:
七、else语句
else语句:
与else语句配合使用有三种情况
分别是:
if .....:
...
else:
...
if表达式不成立时,执行else
while ......:
...
else:
...
for ......:
...
else:
...
没有碰到break时执行else
举例:模拟ATM机取款输入密码,密码最多输入3次,输入错误提示密码错误,请重新输入,超过3次则提示3次密码均输入错误。
使用if-else:
for item in range(3): pwd=input('请输入密码:') if pwd=='8888': print('密码正确') break else: print('密码不正确') else: print('对不起,三次密码均输入错误')
执行结果如下:
使用while-else编写:
a=0 while a<3: pwd=input('请输入密码:') if pwd=='8888': print('密码正确') break else: print('密码不正确') a+=1 else: print('对不起,三次密码均输入错误')
执行结果如下:
八、嵌套循环
嵌套循环:
循环结构中又嵌套了另外的完整的循环结构,其中内存循环作为外层循环的循环体执行
举例:
输出一个三行四列的矩形
#输出一个三行四列的矩形 for i in range(1,4): for j in range(1,5): print('*',end=' ') #不换行输出 print() #打行
执行结果如下:
练习:输出99乘法表
#输出99乘法表 for i in range(1,10): for j in range(1,i+1): print(i,'*',j,'=',i*j,end=' ') print()
执行结果如下:
九、二重循环中的break和continue
二重循环中的break和continue用于控制本层循环
break举例:当数据与2取余时,跳出循环
'''流程控制语句break和continue在二重循环中的使用''' for i in range(5): for j in range(1,11): if j%2==0: break print(j)
执行结果如下:
解析:外层循环共执行了5次,内存循环中当j为1时,跳出循环会到外层循环,外层循环第二次执行时,内存循环执行二次,j取第一个即1,又会跳出循环,所以结果为5个1,即内层循环每次执行1次就会跳出循环,所以j的值一直是1
continue举例:当数据与2取余时,继续循环
for i in range(5): for j in range(1,11): if j%2==0: continue print(j,end=' ') print()
执行结果如下:
解析:共执行5*10=50次,当条件j%2==0不满足时,打印j,当条件j%2==0满足时,则不打印j,继续内层循环,在1-10这10个整数中,不满足%2==0的数据是1,3,5,7,9,外层循环5次,所以输出5行1,3,5,7,9