Python 入门 08 —— 分支与循环:if else 、while 、for in
Python中没有 switch case 多分支选择语句。
单分支情况下,在条件为True时执行下述指令,在条件不满足时则跳过下述指令。
if 条件 :
语句
多重分支结构中增加了else语句后进行处理:当条件满足时(即条件为True),执行以下指令;否则将跳过以下指令段。
if 条件1 :
语句1
esle :
语句2
或:
if 条件1 :
语句1
esle 条件2 :
语句2
或:
if 条件1 :
语句1
esle 条件2 :
语句2
esle 条件3 :
语句3
esle 条件4 :
语句4
esle :
语句5
3、分支嵌套
if 条件1 :
语句1
if 条件2 :
语句2
if 条件3 :
语句3
二、while 循环语句
当条件满足时,执行循环体中的语句。
while 条件 :
循环体
三、for in 语句
for x in 可迭代对象 :
循环体
在这种情况下,在in操作符后直接使用可迭代对象无需像处理列表那样逐一列举所有元素因为for in语句的实际执行过程如下:首先通过调用iter()函数将该可迭代对象转换为一个生成器表达式;其次通过调用next()函数逐个获取该生成器表达式的下一个值;最后将这些值传递至循环体进行处理。
即上面的语句等价于以下语句:
x = iter(可迭代对象)
while True:
try:
xx = next(it)
循环体(xx)
except StopIteration:
break
例如:
for x in dict({1:36,2:37,3:38}).values(): print(x,end=' ') # 显示:36 37 38
it = iter(dict({1:36,2:37,3:38}).values())
while True:
try: print(next(it),end=' ')
except StopIteration: break
# 显示:36 37 38
由上可见,在Python中,for in 语句实际是 while 语句的一个包装。
四、continue、break
continue、break 通常出现在循环体语句。
在运行循环体块时, 遇到continue关键字, 则会跳过所有后续指令并直接转向该循环的下一次迭代.
for i in range(5): print(i,end=' '); print(10*i,end=' ') # 0 0 1 10 2 20 3 30 4 40
for i in range(5): print(i,end=' ');continue; print(10*i,end=' ') # 0 1 2 3 4
当处理循环体时遇到break事件不仅会停止后续代码还会立即跳出当前循环导致循环提前终止例如:
for i in range(5): print(i); break; print(10*i) # 0
五、在循环语句结尾处添加 else 语句
用于 while 和 for in 循环,在其结尾处都可以添加一个 else 语句。当上述循环体结束时,触发相应的操作步骤。例如,在 while 循环中设置如下代码:
while 条件:
循环体
else:
语句
for x in 可迭代对象 :
循环体
else:
语句
在编程逻辑中,默认情况下会在每次循环结束后才会执行的语句;那么是否可以直接将这段代码放置在循环体下方而不使用 else 关键词呢?如果在循环体中没有遇到 break 关键字,则 else 块中的代码就会一直被执行下去;然而一旦遇到 break 关键字时,则会立即退出当前的 for 循环并继续执行 next 循环;此外,在这种情况下 if-else 的逻辑也会相应地被继承下来;例如:
for i in range(10): print(i,end=' ')
else:print(i+1000,end=' ')
print(i+2000)
# 显示:0 1 2 3 4 5 6 7 8 9 1009 2009
for i in range(10):
print(i,end=' ');
if(i>=6): break
else:print(i+1000,end=' ')
print(i+2000)
# 显示:0 1 2 3 4 5 6 2006
六、循环作用域
在Python语言中,并不存在关于循环作用域的明确说法。即,在Python语言中,并没有独立定义针对循环语句的作用域机制。这些在Python编程逻辑中被操作的变量,在默认情况下并不构成独立的作用域空间;这些在循环内部定义的新变量,在外部代码中仍然可以被访问。例如:
i = 1
while i<=8: j = i+10; i += 1
for n in range(20): m = n + 1000
print(i,j,n,m) # 9 18 19 1019
———————————————— 本篇完 ————————————————
看完之后,麻烦您顺手点击下方 “点赞” 两个字给我点个赞吧 - , 谢谢您了。
如果您能如同优秀教师一般,在适当的时候随意写下几句话来表扬或批评我,那您的感激之情将难以言表。
在我人生的道路上,有了您的鼓励和指导,我一定成长快快。
