range()函数的使用
用于生成一个整数序列
创建range函数的三个方法
内置函数:不需要在前面添加前缀,直接使用的函数
打印出来只能返回一个迭代器对象,并不能看到内容,如果想要看到具体数据,要使用list函数
range的优势:不管range大小是多少,内存都是不变的,只储存start,stop,步长,只有在用的时候,才会去运算相关元素。
可以用in ,not in来判断range 里有没有这个元素。
代码解释如下
#range()三种创建方式
'''
第一种方式,只有一个参数,代表stop
'''
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是列表
'''
第二种创建方式,给了两个参数,第一个代表start,第二个代表stop,步长为1
'''
r=range(1,10)#指定从1开始到10结束不包括10,步长为1
print(list(r))#[1,2,3,4,5,6,7,8,9]
'''
第三种方式创建方式,给了三个参数,分别是start,stop,步长
'''
r=range(1,10,2)
print(list(r))#[1, 3, 5, 7, 9]
'''
判断指定整数 在序列是否存在 in ,not in
'''
print(10 in r)
print(9 in r)
print(range(1,20,1))#[1..19]
print(range(1,101,1))#[1....101]
while循环
执行图:
语法结构:
while 条件表达式:
条件执行体(循环体)
if与while的区别:if最多执行一次执行体,while可以循环多次。
if判断一次,执行1次,while判断n+1次,执行n次
学习案例:
写while语句的四步循环法:
累加到5
'''
初始化变量
条件判断
条件执行体(循环体)
改变变量
总结:初始化变量与条件判断变量和改变的变量为同一个
'''
a=0
sum=0
while a<5:
sum+=a
a+=1
print(sum)#10
小练:
计算1-100的偶数和
#初始化变量
a=0
sum=0
#条件判断
while a<=100:
#条件执行体求和
sum+=a
#改变变量
a+=2
print(sum)
另一种写法:
bool是奇数,not bool是偶数
#初始化变量
a=0
sum=0
#条件判断
while a<=100:
#条件执行体求和
if not bool(a%2):
sum+=a
#改变变量
a+=1
print(sum)
for in循环
in 从字符串序列等中依次取值,又称为遍历
for in遍历的对象必须是可迭代的对象
执行图:
语法结构:
for 自定义变量 in 可迭代对象:
循环体
学习案例:
for item in 'Python':#依次把Python赋值给item,打印Python
print(item)
#range()可以产生整数序列,是一个可迭代对象
for i in range(10)#1-9
print(i)
#如果在循环体中不需要使用自定义变量,可以写为"_"
for _ in range(5):
print('我好累')
print('使用for循环,计算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=1*1*1+5*5*5+3*3*3
'''
for item in range(100,1000):
ge=item%10
shi=item//10%10
bai=item//100
#print(bai,shi,ge)
if bai**3+shi**3+ge**3==item:
print(item)
break
通常与if一起使用,用来跳出循环(非正常结束循环)
执行图:
学习案例:
现实场景:有三次机会输入密码,第一次就输入对了
用for循环写:
'''
从键盘录入密码。,最多录入三次,如果正确就结束循环
'''
for item in range(3):
pwd=input('请输入密码')
if pwd=='8888':
print('密码正确')
break
else:
print('密码不正确')
用while循环写:
a=0
while a<3:
pwd=input('请输入密码:')
if pwd=='8888':
print('密码正确')
break
else:
print('密码不正确')
a+=1
continue
结束当前循环,进入下一次循环
执行图:
学习案例:
1-50输出5的倍数:
'''要求输出1-50之间所有5的倍数,5,10,15,20,25.....
和5的余数为0的都是5的倍数
什么养的数不是5的倍数,1,2,3,4,6
和5的余数不是5的倍数
'''
for item in range(1,51):
if item%5!=0:
continue
print(item)
else语句
执行图:
![](https://img-blog.csdnimg.cn/54ff3f1c281a47499471f69622e68c02.png)
学习案例:
for+else:
for item in range(3):
pwd=input('请输入密码:')
if pwd=='8888':
print('密码正确')
break
else:
print('密码不正确')
else:#没有遇到break时候执行
print('对不起,三次密码均错误')
while+else:
for item in range(3):
pwd=input('请输入密码:')
if pwd=='8888':
print('密码正确')
break
else:
print('密码不正确')
else:#没有遇到break时候执行
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的详解:
for i in range(5):
for j in range(1,11):
if j%2==0:
break
print(j,end='\t')
print()
解释:会输出5个1,每次i从0-4时,j第一个等于1,不符合if里的条件,打印1,j然后到2,发现符合if条件,break跳出j循环,i到2,依次每次输出一个1,并换行。
for i in range(5):
for j in range(1,11):
if j%2==0:
continue
print(j,end='\t')
print()
解释:会输出5行1 3 5 7 9,第一次遇到2时,还在内循环,j可以到3,指导内循环结束,换行,下一次i=2,j又从1开始,所以打印 5行1-10的奇数