循环
——反复做同一件事的情况,称为循环
range()函数的使用
——用于生成一个整数序列
- 创建range对象的三种方式:
- range(stop)——起始值默认为0,参数为结束值,步长为1
- range(start,stop)——起始值&结束值,不含结束值,步长为1
- range(start,stop,step)——起始值&结束值&步长
'''第一种创建方式,只有一个参数(小括号中只给了一个数)''' r=range(10) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],默认从0开始,默认相差1称为步长 print(r) #range(0, 10) print(list(r)) #用于查看range对象中的整数序列 -->list是列表的意思 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] '''第二种创建方式,给了两个参数(小括号中给了两个参数)''' r=range(1,10) #指定了其实函数,从1开始,到10结束(不包含10),默认步长为1 print(list(r)) #[1, 2, 3, 4, 5, 6, 7, 8, 9] '''第三种创建方式,给了三个参数(小括号中给了三个参数)''' r=range(1,10,2) #range(起始值,结束值,步长) print(list(r)) #[1, 3, 5, 7, 9] '''判断指定的整数,在序列中是否存在——in,not in''' print(10 in r) #False, 10不在当前的r这个整数序列中 print(9 in r) #True,9在当前的r这个序列中 print(10 not in r) #True print(9 not in r) #False
- range类型的优点:
不管序列多长,range对象存储空间相同,仅需要储存start,stop和step;
while循环
- 语法结构:
while 条件表达式:
条件执行体(循环体)
a=1 #判断条件表达式 while a<10: #条件执行体 print(a) a+=1
- 选择结构的if与循环结构while的区别:
- if判断一次,条件为True执行一行
- while判断N+1次,条件为True执行N次
- 4步循环法:
- 初始化变量
- 条件判断
- 条件执行体(循环体)
- 改变变量
总结: 初始化变量与条件判断的变量与改变的变量为同一个
''' 练习题目: 计算0-4之间的累加和 ''' sum=0 #用存储累加和 '''初始化变量为0''' a=0 '''条件判断''' while a<5: '''条件执行体(循环体)''' sum+=a #sum+a=sum '''改变变量''' a+=1 print('和为',sum)
'''题目: 计算1-100之间偶数的和''' #做法一: sum=0 #用于存储偶数和 #初始化变量 a=1 #条件判断 while a<=100: #条件执行体(求和) #条件判断是否是偶数 if a%2==0: sum+=a #改变变量 a+=1 print('1-100之间的偶数和',sum) #做法二:用bool值筛选偶数 print(bool(0)) sum=0 #用于存储偶数和 #初始化变量 a=1 #条件判断 while a<=100: #条件执行体(求和) #条件判断是否是偶数 if not bool(a%2): # %取余数,bool(0)为FALSE sum+=a #改变变量 a+=1 print('1-100之间的偶数和',sum)
for-in循环
- 语法结构:
for 自定义变量 in 可迭代对象
'''现接触的可迭代对象:字符串&序列''' for item in 'Python': print(item) #从Python中字母依次取出赋值给item依次输出 '''range()产生一个整数序列,也是一个可迭代对象''' for i in range(10): print(i) '''如果在循环体中不需要使用到自定义变量,可将自定义变量写为“ _ ”''' for _ in range(5): print('人生苦短,……') #将‘人生苦短,……’输出5遍
'''题目: 使用for循环,计算1-100之间的偶数和 ''' #做法一: sum=0 #用于储存偶数和 for item in range(1,101): if item%2==0: sum+=item print('1-100之间的偶数和为',sum) #做法二:用bool sum=0 #用于储存偶数和 for item in range(1,101): if not bool(item%2): sum+=item print('1-100之间的偶数和为',sum)
'''题目: 使用for in 循环,输出100-999之间的水仙花数 DEF水仙花数:个位数的三次方+十位数的三次方+百位数到三次方=该数 EX: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) #结果为:153 370 371 407
break、continue与else语句
- 流程控制语句break——用于结束循环结构,通常与分支结构if一起使用
- 语法结构:
for …… in ……: |或| while(条件):
……
if ……:
break
'''题目: 从键盘录入密码,最多录入三次,如果正确就结束循环 ''' #——————for循环 for item in range(3): pwd=input('请输入密码:') if pwd=='0000': #注意引号 print('密码正确') break else: print('密码错误') #——————while循环 '''初始化变量''' a=0 '''条件判断''' while a<3: '''条件执行体(循环体)''' pwd=input('请输入密码:') if pwd=='0000': #注意引号 print('密码正确') break else: print('密码错误') '''改变变量''' a+=1
- 流程控制语句continue——用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
- 语法结构:
for …… in ……: |或| while(条件):
……
if ……:
continue
'''题目: 要求使用“continue”输出1-50之间所有5的倍数,5,10,15,20,…… ''' #5的倍数共同点: 和5的余数为0 #什么样的数不是5的倍数:1,2,3,4,6,7,8,9,……——和5的余数不为0的数都不是5的倍数 print('---------不使用continue------------') for item in range(1,51): if item%5==0: print(item) print('----------使用continue------------') for item in range(1,51): if item%5!=0: continue print(item)
- 流程控制语句else
- 语法结构:
for……else; while……else
'''for …… else …… ''' for item in range(3): pwd=input('请输入密码:') if pwd=='0000': print('密码正确') break else: print('密码错误') else: print('对不起,三次密码均输入错误')
'''while …… else ……''' a=0 while a<3: pwd=input('请输入密码:') if pwd=='0000': print('密码正确') break else: print('密码错误') '''改变变量''' a+=1 else: print('对不起,三次密码均输入错误')
嵌套循环
- 嵌套循环——循环结构中又嵌套了另外的完整的循环结构,其中内层循环作为外层循环的循环体执行
- 注意:外层循环执行一次,内层循环执行完整一轮!!
'''输出一个三行四列的矩形''' for i in range(1,4): for j in range(1,5): print('*',end='\t') #不换行输出 print() #换行
'''输出九九乘法表''' 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 & continue 只对内层循环作用,若内层循环满足break 或 continue ,返回到外层循环重新执行
for i in range(5): #代表外层循环要执行5次 for j in range(1,11): if j%2==0: break #与2的余数=0,退出循环;!=0时,打印输出j print(j) for i in range(5): #代表外层循环要执行5次 for j in range(1,11): if j%2==0: continue print(j,end='\t') print() #换行
总结
range()
函数——生成整数序列、起始值默认为0、步长默认为1- 循环结构:
- ——while——用于次数不固定的循环、初始条件不成立,一次都不执行
- ——for-in——用于遍历可迭代对象(字符串,range()产生的序列)
- break & continue & else
- ——break——退出当前循环结构
- ——continue——结束当前循环进入下一次循环
- ——else——if…else; while…else; for…else
- 嵌套循环——外层循环执行一次,内层循环执行完整一轮; while与for-in互相嵌套