Python学习系列之循环(十)
一、循环概念
循环:
反复做同一件事情的情况,成为循环
循环结构流程图:

二、循环的分类:
- 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='\t') #不换行输出
print() #打行
执行结果如下:

练习:输出99乘法表
#输出99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end='\t')
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='\t')
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

浙公网安备 33010602011771号