条件语句


上节介绍的表达式和函数功能非常有限,因为缺少根据比较结果来执行不同操作的方法。

控制语句引入此功能,执行控制语句可以决定解释器接下来干什么,而不是进行计算,常见控制语句有:条件语句、迭代语句

条件语句:

if <expression>:
    <suite>
elif <expression>:
    <suite>
else:
    <suite>

条件语句执行条件如下:

(1)计算头表达式

(2)如果头表达式为真,执行, 否则跳转至条件语句的所有后续语句

布尔值与布尔表达式

>>> 0==-0
True
>>> 4>2
True
>>> 5>=5

Python有两个布尔值,分别为True和False,常见布尔表达式如下所示

image.png


迭代语句


除了选择执行语句外,还需要重复。一般表现为一个函数可以被多次应用,尽管只被定义一次,迭代控制结构用于多次执行同一语句的机制。例如生成生成斐波那契数列函数。

# 斐波那契数列
# 下一个数是前两个数之和
def fib(n):
    """
    compute the nth Fibonacci number, for N>=1.
    """
    pred, curr = 0, 1
    k = 1
    while k < n:
        pred,curr = curr, pred + curr
        k = k +1
    return curr
fib(3)

while语句

while <expression>:
  <suite>

while语句执行过程如下:

(1)计算头表达式

(2)如果表达式为真,执行suite,然后返回第一步。

函数测试


测试是验证函数行为是否符合预期,函数语言现在已经非常复杂,因此需要在函数实现开始进行测试。

测试是系统完成此验证的机制,通常采用另外一种函数的形式,该函数包含一个或多个被测函数的示例调用。然后将返回值与预期进行验证

assertions语句 

在布尔上下文中有一个表达式,后跟带引号的文本行,如果表达式的计算为假,则显示该行。

示例如下:

# 斐波那契数列
def fib(n):
    """
    compute the nth Fibonacci number, for N>=1.
    """
    pred, curr = 0, 1
    k = 1
    while k < n:
        pred,curr = curr, pred + curr
        k = k +1
    return curr
assert fib(3) == 3, 'The 8th Fibonacci number should be 3'

错误如下:

image.png

可以通过函数的方式进行多个样例测试

image.png

doctest测试

Python提供了一种更改为便捷的测试方式,把简单测试直接放置在函数的文档字符串中,文档字符串的第一行包含该函数的单行表示,后跟空白行,文档字符串可能包含调用该函数的示例交互式对话,具体如下:

image.png

调用测试模式代码如下:

from doctest import testmod
testmod()

结果输出如下:

image.png


注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:条件语句,迭代语句,函数测试,高阶函数,递归函数,lamda表达式
发表评论