python学习_循环结构(while循环和for循环)
一、什么叫循环结构?
反复做同一件事情的情况,就叫循环
python中的循环结构主要有两种:
1)while
2)for-in
二、while循环
只要条件成立,其包含的某条语句或某个语句块就会一直被执行
循环结构while与分支结构if的区别:
if是判断一次,条件为True就执行一次执行体
while是判断N+1次,条件为True就执行N次循环体
while循环语法结构
while 条件表达式: 条件执行体(循环体) #while循环 '''程序要求1:计算1~1000000的累和''' i=1 sum=0 while i<=1000000: sum+=i i+=1 print(sum) #程序要求2:计算0~100之间偶数的累加和 sum=0 a=1 while a<=100: if a%2==0: sum+=a a+=1 print("0~100之间偶数的累加和为:",sum) #程序要求3:计算0~100之间奇数的累加和 sum=0 a=1 while a<=100: if a%2!=0: sum+=a a+=1 print("0~100之间奇数的累加和为:",sum)
while循环流程图:
while循环的执行流程:
- 初始化变量
- 条件判断(对初始化的那个变量进行判断)
- 循环体
- 改变变量(改变的也是初始化的那个变量)
三、for-in循环
- in表示从(字符串、序列)中依次取值,又叫做遍历
- for-in遍历的对象必须是可迭代对象
for-in语法结构
for 自定义的变量 in 可迭代对象: 循环体 '''程序要求1:输出100~999之间的水仙花数 什么叫水仙花数? 水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身。例如:1**3 + 5**3+ 3**3 = 153 ''' for i in range(100,1000): ge=i%10 #得出个位数 shi=i//10%10 #得出十位数,也可以i%100//10 bai=i//100 #得出百位数 if ge**3+shi**3+bai**3==i: print(i) '''程序要求2:用for循环计算1~1000000的累和''' sum=0 for i in range(1,1000001): sum=sum+i print(sum) '''程序要求3:用for循环计算1~100之间偶数的和''' sum=0 for i in range(1,101): if i%2==0: sum+=i print(sum)
for-in流程图
注意:当自定义变量在循环体中不用到时,可以用下划线_ 替代自定义变量
for _ in 可迭代对象: 循环体(循环体中不用到自定义的变量)
'''循环输出语句5次''' for _ in range(5): print('执行循环')
四、流程控制语句break(非正常结束循环)
break语句用于结束循环结构,通常与分支结构if一起使用
'''程序要求:从键盘录入密码,最多录入3次,如果正确就结束循环''' for i in range(3): password=input("请输入密码:") if password=="8888": print("密码正确") break else: print("密码错误!")
'''程序要求:从键盘录入密码,要求输入3次,如果密码正确则退出循环''' '''初始化变量''' n=0 '''条件判断''' while n<3: '''条件执行体''' pwd=input("请输入密码:") if pwd=='8888': print("密码正确") break else: print("密码错误!") '''改变变量''' n += 1
五、流程控制语句continue
continue语句用于结束当前循环,进入下一次循环,通常也是与分支结构if一起使用
'''程序要求:输出1~50之间所有5的倍数,5、10、15、20..... 5的倍数:与5的余数为0的数就是5的倍数 反过来说:也可以是与5的余数不为0的数就不是5的倍数 ''' for i in range(1,51): if i%5==0: print(i) print("----------使用continue---------") for i in range(1,51): if i%5!=0: continue print(i)
break和continue流程执行图如下:
六、else语句
与else语句配合使用的三种情况:
for i in range(3): pwd=input("请输入密码:") if pwd=='8888': print("密码正确") break else: print("密码错误") else: print("密码输入错误次数过多,被锁定")
n=0 while n<3: pwd=input("请输入密码:") if pwd=='8888': print("密码正确") break else: print("密码错误") n+=1 else: print("密码错误次数过多,被锁定")
七、嵌套循环
循环结构中又嵌套了另外的完整的循环结构,如下图,这种就叫嵌套循环,其中内层循环做为外层循环的循环体执行
'''题目要求:打印一个9行的直角三角形,如下 * ** *** **** ***** ****** ******* ******** ********* ''' for i in range(1,10): #控制行 for j in range(1,i+1): #控制列 print("*",end="") print() print("-------------将上面例子改成一个九九乘法表---------------------") for i in range(1,10): for j in range(1,i+1): print(i,"*",j,"=",i*j,end="\t") print() #while循环打印九九乘法表 i=1 #行 while i<=9: j=1 #列 while j<=i: print(j,'*',i,'=',j*i,end='\t') j+=1 print() #换行 i+=1
二重循环中的break和continue只用于控制一层循环(本层循环)
'''输出10以内的素数 素数:也叫质数,大于1的自然数,除了1和它本身外不能被其他数整除的自然数 '''
#流程控制语句break和continue在二重循环中的使用
for i in range(2,11): for j in range(2,i): if i%j==0: break else: print(i,'是素数')