目录
用于生成一个整数序列
创建range对象的三种方式
返回值是一个迭代器对象
range类型的优点:不管range对象表示的整数序列有多少,所有range对象占用的内存空间都是相同,因为仅仅需要储存start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素
in与not in判断整数序列中是否存在(不存在)指定的整数
- #range()的三种创建方式
- '''第一种创建方式,只有一个参数(小括号中只给了一个数)'''
- 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是列表的意思
-
- '''第二种创建方式,给了两个参数(小括号中给了两个数)'''
- 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)
- 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
-
- print(range(1,20,1)) #[1...19]
- print(range(1,101,1)) #[1....100]
反复做同一件事情的情况,称为循环
循环结构的流程图
循环的分类
while
for
语法结构
while 条件表达式:
条件执行体(循环体)
选择结构的if与循环结构while的区别
if是判断一次,条件为True执行一次
while是判断N+1次,条件为True执行N次
- a = 1
- #判断条件表达式
- while a<10:
- #执行条件执行体
- print(a)
- a+=1
四步循环法
初始化变量
条件判断
条件执行体(循环体)
改变变量
while循环的执行流程
- #计算0到4之间的累加和
- '''
- 4步循环法
- 1.初始化变量
- 2.条件判断
- 3.条件执行体(循环体)
- 4.改变变量
- 总结:初始化的变量与条件判断的变量与改变的变量为同一个
- '''
-
- sum =0 #用于存储累加和
- '''初始化变量为0'''
- a = 0
- '''条件判断'''
- while a<5:
- '''条件执行体'''
- sum += a
- '''改变变量'''
- a += 1
- print('和为',sum)
练习:计算1-100的偶数和
-
- print(bool(0))
- '''计算1-100的偶数和'''
- '''初始化变量'''
- a = 1
- sum = 0
- '''条件判断'''
- while a<=100:
- '''条件执行体(求和)'''
- #条件判断是否为偶数
- if not bool(a%2):#if a%2==0:
- sum += a
- '''改变变量'''
- a+=1
- print('1-100之间的偶数和',sum)
-
for-in循环
in表达从(字符串,序列等)中依次取值,又称遍历
for-in遍历的对象必须是可迭代对象
for-in的语法结构
for 自定义的变量 in 可迭代对象:
循环体
for-in的执行图
循环体内不需要访问自定义变量,可以将自定义变量替代为下划线
- for item in 'Python': #第一次取出来的是p,将p赋值item,将item,将item的值输出
- print(item)
-
- #range()产生一个整数序列,--》也是一个可迭代对象
- for i in range(10):
- print(i)
-
- #如果在循环体中不需要使用到自定义变量,可将自定义变量写为“_”
- for _ in range(5):
- print('人生苦短,我用python')
-
- #计算1-100的偶数和
- sum =0
- for item in range(1,101):
- if item%2==0 :
- sum+=item
- print('1-100之间的偶数和为:',sum)
练习:输出100-999的水仙花数
- '''输出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
用于结束循环结构,通常与分支结构if一起使用
- '''从键盘录入密码,最多录入3次,如果正确就结束循环'''
- for item in range(3):
- pwd = input('请输入密码:')
- if pwd =='888':
- print('密码正确')
- break
- else:
- print('密码不正确')
-
-
- a =0
- while a<3:
- '''条件执行体(循环体)'''
- pwd = input('请输入密码')
- if pwd =='8888':
- print('密码正确')
- break
- else:
- print('密码不正确')
-
- '''改变变量'''
- a+=1
流程控制语句continue
用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
-
- '''要求输出1-50之间所有5的倍数,5,10,15,20,25
- 5的倍数的共同点,和5的余数为0的数都是5的倍数
- 什么样的数不是5的倍数,1,2,3,4,6,7,8,9.。。与5的余数不是0的数不是5的倍数
- 要求是使用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语句
与else语句配合使用的三种情况
- for item in range(3):
- pwd = input('请输入密码:')
- if pwd == '8888':
- print('密码错误')
- break
- else:
- print('密码错误')
- else:
- print('对不起,三次密码均输入错误')
- 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() #打印
-
- #输出三角形
- for i in range(1,10):
- for i in range(1,i+1):
- print('*',end='')
- 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在二重循环中的使用'''
- for i in range(5): #代表外层循环要执行5次
- for j in range(1,11):
- if j%2==0:
- #break #直接跳到外部循环
- continue
- print(j,end='\t')
- print()
总结: