day10_loop
循环
用来处理一些重复的任务。
python提供两种循环方式:while/for
基本操作
while
condition = True
while condition:
print("只要condition为真,就执行这里面的代码")
condition = False
print("因为condition被赋值为false了,所以循环结束,执行外层代码")
while执行流程:
-
判断condition是否为true
-
如果为true,执行内部代码,否则不执行
-
当内部代码执行完成之后,再次运行执行 1,2的步骤,直到condition为False
while-else
while condition:
print("如果condition为True,则执行这里的代码")
else:
print("如果condition为False,则执行这里的代码")
while-else有点类似高级的if-else结构
注意:else结构里的代码,只有当condition为False时,才会执行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4UgHAgH-1631705893452)(./img/day10_while_else.png)]
如上图,因为循环是由break跳出的循环,condition的值不为false,所以并没有执行else语句块里的内容
可以看到,当condition==0时(隐式转换,0的boolean值为False),此时并没有再次进入循环体,而是跳入了else语句块中,然后才结束整个while-else块。
for
for i in range(10):
print(i)
# 使用到了in关键字和range()函数
for循环被用于遍历序列(字符串,列表,字典,元组,集合等)
in 是用来比较包含关系的,a in b表示判断a是否在b当中,当b为字符串时,判断的是a是否是b的子集,当b为列表集合等时,判断的则是a是否为b的元素。
当这个结构用在for上面时,就起到了遍历序列的效果。
for 特例:遍历字典
字典存放的是键值对的数据,所以在使用for遍历时,需要特别注意自己取到的值
通过上面的代码,可以很清晰的看到,默认遍历的到的值是字典中key的值,但是可以通过字典的items方法,来获取字典的key值和value值,然后同时赋值给key和value变量,这样一次性就遍历出了字典的全部数据。
range()
target = 10
i = range(target)
print(i)
range()用来返回一个数字序列,默认从0开始,步长为1,最大值比target小1
高级用法:
range(start, stop, step)
中断
细心的朋友应该有看到,在while循环的时候又一个break。这个break的作用就是用来结束一层循环的。
在日常生活中我们会碰到两种情况:
- 正在看书,但是累了,所以停下来休息一会儿,然后接着看。
- 正在看书,但是到点吃饭了,所以就停止看书,去吃饭了。
循环里面也有类似的需求,所以就有了中断,在python里使用continue和break来应付着两种情况
# 计算 从0到10的奇数的和
count = 0
start = 1
while True:
if start % 2 == 0:
if start == 10:
break
start += 1
continue
count += start
print("start is:",start)
start += 1
print(count)
很明显,continue就是用来停止一轮循环的,当遇到continue之后,循环会立即停止这一轮循环,并重新开始。
break 是用来停止整个循环用的。
循环的嵌套
和if-else一样,循环也可以嵌套使用,这个并没有什么好说的,但是,有一点需要注意,那就是break和continue的作用域。
break和continue只用作用在对应的循环层
存在多层嵌套时,内部一层的循环中,出现了break或continue,此时break和continue只能影响内部层的循环。
在上面使用两层for嵌套来打印乘法口诀表。
在第二层的for循环中有break,但是并没有影响到第一层的for循环
ue,此时break和continue只能影响内部层的循环。
[外链图片转存中…(img-t7O0ArVa-1631705893464)]
在上面使用两层for嵌套来打印乘法口诀表。
在第二层的for循环中有break,但是并没有影响到第一层的for循环