共计 2362 个字符,预计需要花费 6 分钟才能阅读完成。
循环语法
循环构造
循环构造是应用 while
、for
循环语句的构造,能够缩小冗余代码,晋升代码的效率。
while 循环
while
循环,while
循环的应用 if
的基本相同,在 while
之后应用表达式,如果表达式为真,就会重复执行 while
循环代码块的作用域,每执行完一次就从新判断 while
的表达式,真就反复上述步骤,直到表达式为假才会跳出;如果一开始就是假,间接跳过。
while expression: | |
code0 | |
code1 | |
... |
# 输入 1 ~~ 100 的数字,并计算出它们的和 | |
num = 1 # 数字 | |
sum_up = 0 # 计算和 | |
count = 100 # 循环的次数 | |
while count: # 判断 count 的值,如果为 0 就跳出循环 | |
print(num) # 输入数字 | |
sum_up += num # 计算他们的和 | |
num += 1 # 数字自增 | |
count -= 1 # 次数自减 | |
print('和:', sum_up) # 循环完结,输入他们的和 |
死循环
只有 while 循环的条件表达式始终为真,相应的作用域就会始终执行,无奈跳出,造成死循环。死循环时循环无奈跳出,循环语句之后的代码也不会执行。
while True : | |
print('死循环') | |
print('跳出循环') # 永远无奈跳出循环 |
关键字的应用
咱们来讲三个很重要的关键字:pass
、break
、continue
pass
意思是过、占位符。自身是个空语句,没有任何含意,不会做任何的事件,只是为了放弃程序结构的完整性二占据一些必要的地位。
要留神辨别 None
和pass
的区别,None
的意思是什么都没有,然而也一层布尔为假的含意;而 pass
是一点意义都没有,只是为了占据一些地位搁置出错而已,更多的状况是用来程序的开发中应用,正式上线是很难看到这个关键字的。
# 代码块中必须有作用域,否则出错,然而我当初不想执行任何货色,怎么办?if True: | |
pass # 应用 pass 占位 | |
while True: | |
pass # 应用 pass 占位 |
break
只能用于循环语句当中,比方while
、for
,只有呈现这个关键字,循环立刻中断,并跳出循环,循环作用域中未执行的代码也不会执行,即便是循环语句的条件表达式尚未为假,也会立即进行执行。
count = 10 | |
while count: | |
count -= 1 | |
if count == 6: | |
break | |
print(count) | |
''' | |
后果:9 | |
8 | |
7 | |
''' |
continue
只能用于循环语句当中,留神和 break
的区别,continue
是跳过 以后 的循环语句,而后持续循环的执行。
count = 10 | |
while count: | |
count -= 1 | |
if count == 6: | |
continue | |
print(count) | |
''' | |
后果:9 | |
8 | |
7 | |
5 | |
4 | |
3 | |
2 | |
1 | |
0 | |
''' |
for 循环语句
作用
循环、遍历、迭代。for 循环的次要作用是能够遍历迭代可迭代对象。将遍历可迭代对象中的数据元素此一个一个顺次提取进去,而后执行代码块中的代码,直到遍历完结。
遍历类型
可迭代对象:容器类型数据、range()函数、迭代器。
# for …… in 两头的变量是可迭代对象中的元素数据。for 变量 in 可迭代对象: | |
code2 | |
code1 | |
... |
# 将一个容器中的数据遍历进去,所有的容器都是可迭代对象 | |
container = 'hello motherland' | |
for i in container: | |
print(i) |
遍历字典只会遍历出字典的键
dctvar = {'one': 1, 'two': 2, 'three': 3} | |
for i in dctvar: | |
print(i) | |
''' | |
后果;one | |
two | |
three | |
''' |
遍历多级容器,咱们就须要嵌套应用 for 循环
var = [[1, 2, 3, 4, 5], [12, 34, 56, 67, 84, 55]] | |
for i in var: | |
for j in i: | |
print(j) |
变量的解包
对于容器,咱们能够间接应用等同长度数量的变量间接将容器中的数据提取进去。
# 所有容器都反对 | |
a, b, c, d, e = 'hello' | |
print(a, b, c, d, e) | |
a, b = ['hello', 'motherland'] | |
print(a, b) | |
a, b = {'one': 1, 'two': 2} # 解包字典获取的是字典的键 | |
print(a, b) | |
''' | |
后果:h e l l o | |
hello motherland | |
one two | |
''' |
所以遍历等长的多级容器的时候就能够利用变量的解包这一个性,疾速遍历容器,尽量的防止循环的嵌套应用,因为循环嵌套是非常耗费计算机资源的。
var = [[1, 2, 3, 4, 5], [12, 56, 67, 84, 55]] | |
for a, b, c, d, e in var: | |
print(a, b, c, d, e) | |
''' | |
后果:1 2 3 4 5 | |
12 56 67 84 55 | |
''' |
range()对象
range 函数是一个可迭代对象,能够依照程序返回一些数字,能够配合 for 将一些简单的工作简化。
语法:
range([start_number], stop_number, step_number)
range([开始值], 完结值, [步长])
range 的三个参数都是整型数字,range 有三种应用办法
-
输出一个参数,这个参数示意完结值,返回的后果是
0 ~~ N-1
for i in range(5): print(i) ''' 后果;0 1 2 3 4 ''' -
输出两个参数,第一个参数 S 是开始值,第二个参数 N 是完结值,返回
S ~~ N-1
。for i in range(-3, 2): print(i) ''' 后果:-3 -2 -1 0 1 ''' -
输出三个参数,第三个参数示意步长,意思是数值的增长依照步长的大小来顺次返回。
# 从 2 开始,数字依照 3 来增长,默认是 1 for i in range(2, 10, 3): print(i) ''' 后果:2 5 8 ''' 倒数
for i in range(5, 0, -1): print(i) ''' 后果:5 4 3 2 1 '''
总结
while
循环个别应用再较为塌实的逻辑当中;for
循环个别就是用于数据的遍历。然而它们两个之间的实质是雷同的。