while/for

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相同,不多赘述

上一篇:“21天好习惯”第一期-11


下一篇:CF1110D Jongmah