1. 循环语句(while)
1.1 循环例子
死循环
print("开始")
while True:
print("Alex是个小都比")
print("结束")
1必然不大于2,所以直接结束
while 1 > 2:
print("如果祖国遭受到侵犯,热血男儿当自强。")
print("结束")
支持在判断处设置变量
data = True
print("开始")
while data:
print("如果祖国遭受到侵犯,热血男儿当自强。")
print("结束")
只会循环一次,因为可以手动改变while里面的变量
print("开始")
flag = True
while flag:
print("滚滚黄河,滔滔长江。")
flag = False
print("结束")
循环只进了了一次,因为条件判断处是:num<3,然后第一次循环,num就被赋值为:5,就直接断开循环
print("开始")
num = 1
while num < 3:
print("滚滚黄河,滔滔长江。")
num = 5
print("结束")
循环会进行四次,num每次都在执行完会输出一句话,然后再加一,那么执行3次之后,还可以执行第四次,执行四次时,4<5,是可以执行的,但是执行完,4+1变成了5,那么就不满足while的条件,就跳出了,所以是四次。
print("开始")
num = 1
while num < 5:
print("给我生命,给我力量。")
num = num + 1
print("结束")
开始 给我生命,给我力量。 给我生命,给我力量。 给我生命,给我力量。 给我生命,给我力量。 结束
1.2 break
我们看下面的例子,break执行之后,下面的2就没有办法输出了,因为循环被中断了。
print("开始")
while True:
print("1")
break
print("2")
print("结束")
开始 1 结束
但是下面的循环就不可以用break跳出:
break跳跃能力有限,跳不出那么大的步伐
print("开始")
while 1:
while True:
print("1")
break
print("2")
print("结束")
1.3 continue
到7的时候,我们设置了一个continue,但是还要在之前,
让i=i+1,但是本身好像不需要continue,程序也可以跑下去。
但是continue的意思就是,让这次循环,仅仅是这一次循环,重新开始。
print("开始")
i = 1
while i < 101:
if i == 7:
i = i + 1
continue#仅仅在7的时候,不执行输出。重新开始下一轮while
print(i)
i = i + 1
print("结束")
我们再找个更形象的例子:从1到20,把3的倍数全部剔除再输出。
和上面一样,只不过条件是:i%3==0,为三的倍数时,让i+1,并且开始下一次循环。
print("开始")
i = 1
while i < 21:
if i %3==0:
i=i+1
continue#仅仅在3的倍数时,不执行输出。重新开始下一轮while
print(i)
i = i + 1
print("结束")
输出结果:
开始 1 2 4 5 7 8 10 11 13 14 16 17 19 20 结束
对于break和continue都是放在循环语句中用于控制循环过程的,一旦遇到break就停止所有循环,一旦遇到continue就停止本次循环,开始下次循环。
当然,通过如果没有了break和continue,我们用while条件的判断以及其他协助也能完成很多功能,有了break和continue可以在一定程度上简化我们的代码逻辑。
1.4while else
被break中断,并不会出现else
while True:
print(123)
break
else:
print(666)
这样就是正常退出循环
i=0
while i<2:
print(123)
i+=1
else:
print(666)
我们使用标志符之后,他也是视为正常退出
i=1
while i:
print(123)
i=0
else:
print(666)
2.循环语句(for)
for i in 对象
这个对象可以是很多东西,例如:列表,字典,字符串,元组,集合
基本都支持直接for去循环对象中的元素
例如:
列表(有序且可变的容器)
for i in [1,2,3]:
print(i)
1 2 3
字符串
for i in '你这个大帅哥':
print(i)
你 这 个 大 帅 哥
集合(无序可变)
for i in {'b','d','a'}:
print(i)
d a b
集合的每次打印结果不一定都一样,因为无序
元组(有序不可变)
for i in ('b','d','a'):
print(i)
b d a
字典(无序可变,键值对)
但是对于字典来说,只能拿到键
for i in {'b':1,'d':2,'a':3}:
print(i)
b d a
但是也可以拿到值
需要用到字典里面的方法:
v={'b':1,'d':2,'a':3}
for i in v.values():
print(i)
1 2 3
只要对象正确,就可以循环读取。为什么这么说呢!
v={'b':1,'d':2,'a':3}
print(v.values())#dict_values([1, 2, 3])
因为v.values是一个伪列表,for是可以对列表进行读取操作的
其他方法
如果不用上面这个方法去读取某个列表,那应该怎么去写:
v=[1,2,3,4,5]
for i in range(0,len(v)):
print(v[i])
1 2 3 4 5
其实背后的原理就是:将后面这个列表里面的每一个元素,依次赋值给i,然后打印
Range
下面把range几种情况都看看吧!在for中常用到
情况1
range单独一个数字,就是默认(0,5,0)
这个三个参数分别是: 起始,结束,步长
for i in range(5):
print(i)
结果:
0 1 2 3 4
情况2
关于range,都是遵循前取后不取的原则,方向是:1到5,那么就取1到4
for i in range(1,5):
print(i)
结果就是输出1-4
情况3
再看看第三个量,步长的相关
for i in range(1,5,2):
print(i)
1,2,3,4,取一三,类似于等差数列
结果就是:1,3
就是以第一个(起始)开始,之后每数两个(步长),取一个值。直到结束为之
情况4
步长为负数:
从5开始,取到-1,步长是-1,就是倒着取数,这时候方向就是5到1,前取后不取,那么对于1来说,2就是前一个数。
如果想倒着取数,那么肯定起始指向结束位置的方向。也要与步长的方向一致。不然不就是南辕北辙吗?
for i in range(5,1,-1):
print(i)
5 4 3 2
另外:
break
continue
while else
上面三个的用法和while相同,不多赘述