第三章 流量控制
Python提供了两种基本流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性地执行某段代码:循环结构则用于实现根据循环条件重复执行某段代码。Python 使用if 语句提供分支支持,提供了while、for-in循环,也提供了break 和continue来控制程序的循环结构。
3.1 顺序结构
顺序结构就是程序从上到下一行行地执行,中间没有任何判断和跳转。
3.2 if分支结果
Python的if 语句有如下三种形式:
第一种形式:
if expression :
statements …
第二种形式:
if expression :
statements …
else :
statements …
第三种形式:
if expression :
statements …
elif expression :
statements …
…
else :
statements …
Python 是一门很“独特”的语言,它的代码块是通过缩进来标记的(大部分语言都使用花括号或end 作为代码块的标记),具有相同缩进的多行代码属于同一个代码块。Python 通常建议缩进4 个空格。然Python语法允许代码块随意缩进N 个空格,但同一个代码块内的代码必须保持相同的缩进,Python 冒号精确表示代码块的开始点这个功能不仅在条件执行体中如此, 后面的循环体、方法体、类体全部遵守该规则。
3.2.1 if条件的类型
if 条件可以是任意类型,当下面的值作为bool表达式时,会被解释器当作False 处理。
False、None、0、" "、( )、[ ]、{ }
if else 语句时有一条基本规则: 总是优先把包含范围小的条件放在前面处理。
3.2.2 pass语句
Python 的pass语句就是空语句。以下程序示范了pass 作为空语句的用法。
s = input('请输入一个整数')
s = int(s)
if s > 5:
print ('输入数值大于5 ')
elif s < 5 :
pass
#空语吾句,相当于占位符
else :
print ("输入数值等于5")
对于s 小于5 的情形,程序暂时不想处理(或不知道如何处理),此时程序就需要通过空语句来占一个位,这样即可使用pass 语句了。
3.3 断言
断言语句和if 分支有点类似,它用于对一个bool 表达式进行断言,如果该bool表达式为True,该程序可以继续向下执行; 否则程序会引发AssertionError 错误。代码示例:
sage= input ( " 请输入您的年龄:")
age = int (sage)
assert 20 < age < 80
print (" 您输入的年龄在20 和80 之间")
如果用户输入的年龄不在规定的区间段内,运行结果如下:
assert 断言的执行逻辑是:
if 条件为False
程序引发AssertionError 错误
3.4 循环结构
循环语句可能包含以下4部分:
- 初始化语句( init_statements ): 一条或多条语句,用于完成一些初始化工作。初始化语句在循环开始之前执行。
- 循环条件( test_expression ) : 这是一个布尔表达式,这个表达式能决定是否执行循环体。
- 循环体( body_statements ):这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行。
- 迭代语句( iteration_statements ) :这个部分在一次执行循环体结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束。
3.4.1 while循环
while 循环的语法格式如下:
[init_statements]
while test_expression :
body_statements
[ iteration_statements ]
while循环在每次执行循环体之前,都要先对test_expression 循环条件求值,如果循环条件为真,则运行循环体部分。代码示例:
count_i=0
while count_i<10:
count_i+=1
print(count_i)
while 循环的循环体中所有代码必须使用相同的缩进,否则Python 也会引发错误。
3.4.2 for-in 循环
for -in 循环专门用于遍历范围、列表、元素和字典等可迭代对象包含的元素。其格式为:
for 变量in 字符串|范围|集合等:
statements
- for-in 循环中的变量的值受for-in 循环控制,该变量将会在每次循环开始时自动被赋值,因此程序不应该在循环中对该变量赋值。
- for-in 循环可用于遍历任何可选代对象。所谓可迭代对象,就是指该对象中包含一个_iter_方法,且该方法的返回值对象具有next()方法。
3.4.3 使用for-in 循环遍历列表和元组
在使用for-in 循环遍历列表和元组时,列表或元组有几个元素, for-in 循环的循环体就执行几次,针对每个元素执行一次,循环计数器会依次被赋值为元素的值。
遍历列表求列表中的所有数值元素的总和、平均值。代码示例:
src_list=[12 , 45 , 3.4 , 13 ,'a', 4 ,56,'Python',109.5]
my_sum=0
my_count=0
for i in src_list:
if isinstance(i,int