前言
很开心,python学到循环语句了,也越来越好玩了,学到这儿,基本上也能处理一些流水线的工作了,只是稍欠装饰显得不那么灵活、复用性不高。
循环语句
python中循环语句有for和while;如上图所示,循环基本都需要做点什么,因为不是需要所有数据,也会带上if条件控制一下输出。
while循环
一般句式
# 作为条件,为True才执行里面的代码块,为false则退出循环
while (condition):
print("执行语句")
复制代码
提示一下:python中没有do...while循环
- 似乎python大多数使用者,没有使用while...else这样的条件
while False:
print("不会被执行")
else:
print("当while条件为False时才执行")
复制代码
- 示例:求1-100之间的和, 就使用while循环来完成
dig=100
sum=0
count=1
while count <=dig:
sum+=count
count+=1
print("1到{}之间的和为:{}".format(dig,sum))
# 输出结果:1到100之间的和为:5050
复制代码
-
代码浅析:
-
- count作为while循环的计数器,它不能超过目标值dig;否则退出循环,而sum+=count,每次都会sum+count之后重新赋给sum
-
当然这是咱们学习之后的成果,那怎么确定结果是正确的呢?
-
- 两个办法,自己拿笔算一算,开什么玩笑;当然是找规律啦,除去100和50,首尾相加得100的数有49对,如:1+99、2+98、3+97,以此类推,直到49+51,也就是按顺序会有49对首尾相加得100,再加上100+50,可不就是5050
-
- 第二个方法自然是用程序来验证,python提供了sum()、range()函数,这里需要批评一下了,在上面的例子中使用了sum=0,也就是它会覆盖了原来的sum()函数,所以在当前代码块中不能使用sum()函数来求和。
# sum()函数接的参数必须是可迭代类型,str除外
s=sum(range(1,101))
print(s) # 输出:5050
# 后面在内置函数再介绍range函数
复制代码
- while True: 这个循环有一个特殊场景,就是在客户端需要实时请求,无限循环则非常有用。
for循环
这是个有点特殊的循环,因为它是for...in的组合,in是啥?咱们的成员运算符啊,其实for就是while,只不过condition换成了x in xxx:而已,所以它不能是for True却能x in xxx;思考一下:while 能不能搭配 x in xxx呢?
- for循环遍历list或者字符串等序列类型
a="1234567"
for i in a:
print(i)
# 输出:
1
2
3
4
5
6
7
复制代码
- for循环经常跟range()函数混在一起;range()函数是一个左闭右开的条件函数
for i in range(5):
print(i)
# 输出:
0
2
3
4
复制代码
range()函数
- range()函数默认从0开始,可以指定区间:range(1,5)
for i in range(1,5):
print(i)
# 输出:
1
2
3
4
复制代码
- 再回忆之前说的str、tuple、list类型对于切片取值的的公式:(n:m:k),只不过在range中需要变成逗号:range(n,m,k),m>n,k为步长
# 奇数
for i in range(1,10,2):
print(i)
# 输出:
1
3
5
7
9
复制代码
continue和break
字面意思,一个是continue继续循环,一个break是中断循环
- 前面举例说while True: 是个无限循环,如果配以if条件控制,当满足条件时break跳出循环
# cmd进入python交互命令模式
>>> count=1
>>> while True:
... print(count)
... if count==4:
... print(count)
... break
... count+=1
...
1
2
3
4
4
复制代码
- 上面的例子如果换成continue,那么就无限循环,它还没中止,自己就终止了。
- 注意1:所有从for或while跳出的循环都不会再执行后面的else;
- 注意2:continue和break的位置如果在某块代码前,那么它后面的代码不会被执行。
i=1
while i<10:
if i==3:
continue
# 不会执行后面的i+=1,i永远是3,然后就在这里无限循环
print("执行不到")
i+=1
复制代码
- 所以要想 它继续,就在continue之前加入条件:i+=1
# cmd输入python进入交互模式:
>>> i=1
>>> while i<10:
... print(i)
... if i==3:
... i+=1
... continue
... print("执行不到的语句")
... print("当i==3,这句不执行,{}".format(i))
... i+=1
...
1
当i==3,这句不执行,1
2
当i==3,这句不执行,2
3
4
当i==3,这句不执行,4
5
当i==3,这句不执行,5
6
当i==3,这句不执行,6
7
当i==3,这句不执行,7
8
当i==3,这句不执行,8
9
当i==3,这句不执行,9
# 是不是漏掉了i==3的那句不执行!!!
复制代码
- break关键字也来一个例子:
# cmd输入python进入交互模式
>>> i=1
>>> while i<10:
... print(i)
... if i==3:
... i+=1
... break
... print("执行不到的语句")
... i+=1
... print("只会执行到i==3")
... else:
... print("从上面循环中跳出,不会执行这里的代码块")
...
1
只会执行到i==3
2
只会执行到i==3
3
复制代码
pass关键字
它是空语句,什么也不干,就是占位;保持结构的完整性。
if i in range(4):
pass
# 执行什么也不会,但是它会遍历完
复制代码
思考一下:while 能不能搭配 x in xxx呢?