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