与其他编程语言一样,python也有流程语句,只有三种:if分支、while循环、for循环(注意:python没有switch-case分支)。下面,依次介绍每种流程语句,并在最后 区别while和for循环的区别。
一:if分支
if语句分支的含义因为大家基本上都了解,就不再再次多说。
区别于其他语言的if的多重判断:
1、python需要使用if-elif-else结构(而不是if-elseif-else)
具体例子如下:
>>> if True:
... print("true")
... elif 2:
... print("2")
... else:
... print("else")
...
true
2、python的if-else的配对(if和else的缩进格数相同则相互匹配)
>>> if 2:
... print(2)
... if 1:
... print("1")
... else:
... print("else")
...
2
1
从上面的代码中,可以发现else是与第一个if相互匹配的,而在C语言中不是这样(在C语言中,else总是与前面的最近的未匹配的if进行匹配---即最近未匹配原则),这点一定要注意(在python中,当if和else的缩进格数相同,则相互匹配)。
二:while循环
python中只有while循环,而没有do...while循环,且while循环还可以有else语句(即while-else结构)。
区别于其他语言的while语句:
1、while有else语句(当while语句的条件变为false时,就会执行else语句)
>>> n=0
>>> while n<5:
... print("执行循环")
... n=n+1
... print(n)
... else:
... print("else被执行")
...
执行循环
1
执行循环
2
执行循环
3
执行循环
4
执行循环
5
else被执行
2、break语句(若执行了break语句,就会跳出while循环,并且不会执行else语句)
else被执行
>>> n=0
>>> while n<5:
... print("执行循环")
... n=n+1
... print(n)
... if n==3:
... print("if被执行")
... break
... else:
... print("else被执行")
...
执行循环
1
执行循环
2
执行循环
3
if被执行
3、continue语句(跳出当前循环,continue后的语句不再执行,进入下次循环)
>>> n=0
>>> while n<5:
... print("执行循环")
... n=n+1
... if n==3:
... print("if被执行")
... continue
... print(n)
... else:
... print("else被执行")
...
执行循环
1
执行循环
2
执行循环
if被执行
执行循环
4
执行循环
5
else被执行
三:for循环
在前面的学习中,曾经仔细讨论过for in迭代的问题。for循环迭代的必须是可迭代对象(即对象拥有__iter__()方法)。当for in在执行的过程中,会自动调用可迭代对象的__iter__()方法返回一个迭代器,每循环一次都会调用迭代器的__next__()方法,返回可迭代对象的一个元素,直到最后返回一个异常
for循环序列(String、列表、元组):因为序列是有顺序的,所以可以按照索引找到对应的元素。
在for循环中使用索引(迭代时具有索引信息)的三种方法:
1、range(start,stop[,step])方法:range()方法用来产生一个从start开始,元素之间隔step,一直到stop结束(但不包含stop)的列表。
>>> x="string"
>>> for y in range(len(x)):
... print(x[y])
...
s
t
r
i
n
g
2、zip()方法:将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。--方法会返回zip对象(是一个可迭代对象)。
>>> s=["a","b","c","d"]
>>> for x,y in zip(range(len(s)),s):
... print(x,y)
...
0 a
1 b
2 c
3 d
3、enumerate()方法:将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。--返回enumerate对象(是一个可迭代对象)。
>>> s=["a","b","c","d"]
>>> for x,y in enumerate(s,1):
... print(x,y)
...
1 a
2 b
3 c
4 d
for循环字典:字典是无序的,必须按照键名才能找到对应的元素。
>>> x={1:2,2:3,3:4,4:5}
>>> for y in x:
... print(y)
...
1
2
3
4
>>> for y in x.items():
... print(y)
...
(1, 2)
(2, 3)
(3, 4)
(4, 5)
>>> for y in x.keys():
... print(y)
...
1
2
3
4