美文网首页
《自学是门手艺》读书笔记9

《自学是门手艺》读书笔记9

作者: 专注执行 | 来源:发表于2019-07-14 19:52 被阅读0次

    无论多复杂的流程控制用分支与循环这两种语句就够了,如同无论多复杂的电路最终都是由通路和开路仅仅两个状态构成的一样。

    if 语句

    if 语句的最简单构成是这样 —— 注意第 1 行末尾的冒号 : 和第 2 行的缩进:

    if expression:
        statements

    如果表达式 expression 返回值为真,执行 if 语句块内部的 statements,否则,什么都不做,执行 if 之后的下一个语句。

    如果,表达式 expression 返回值无论真假,我们都需要做一点相应的事情,那么我们这么写:

    if expression:
        statements_for_True
    else:
        statements_for_False

    如果表达式 expression 返回值为真,执行 if 语句块内部的 statements_for_True,否则,就执行 else 语句块内部的statements_for_False

    有时,表达式 <expression> 返回的值有多种情况,并且针对不同的情况我们都要做相应的事情,那么可以这么写:

    if expression_1:
        statements_for_expression_1_True
    elif expression_2:
        statements_for_expression_2_True
    elif expression_3:
        statements_for_expression_3_True
    elif expression_...:
        statements_for_expression_..._

    for 循环

    Python 语言中,for 循环使用range() 这个“整数等差数列生成器” 的函数。

    range() 是个内建函数,它的文档如下:

    range(stop)
    range(start, stop[, step])

    只有一个参数的时候,这个参数被理解为 stop,生成一个从 0 开始,到 stop - 1 的整数数列。

    这就解释了为什么有的时候我们会在 for ... in range(...): 这种循环内的语句块里进行计算的时候,经常会在变量之后写上 + 1,因为我们 range(n) 的返回数列中不包含 n,但我们有时候却需要 n。

    start 参数的默认值是 0。如需指定起点,那么得给 range() 传递两个参数,比如,range(2, 13)……

    第三个参数可选;step,步长,就相当于是 “等差数列” 当中的 “差”,默认值是 1。例如,range(1, 10, 2) 生成的是这样一个数列 [1, 3, 5, 7, 9]。

    Continue、Break 和 Pass

    在循环的过程中,可以用 continue 和 break 控制流程走向,

    continue 语句将忽略其后的语句开始下次循环,而 break 语句将从此结束当前循环,开始执行循环之后的语句:

    for 语句块还可以附加一个 else —— 这是 Python 的一个比较有个性的地方。附加在 for 结尾的 else 语句块,在没有 break 发生的情况下会运行。

    pass 这个语句主要用来占位占位。

    while 循环

    在当前绝大多数编程语言中,一般都提供两种循环结构:

    Collection-controlled loops(以集合为基础的循环)
    Condition-controlled loops(以条件为基础的循环)

    for ... in ... 是 Collection-controlled loops;while是Condition-controlled loops

    while 循环的格式如下:

    while expression:
            statements

    for 和 while 的区别

    for 更适合处理序列类型的数据(Sequence Type)的迭代,比如处理字符串中的每一个字符,比如把 range() 返回的数列当作某种序列类型的索引。

    while 更为灵活,因为它后面只需要接上一个逻辑表达式即可。

    控制流程总结

    只处理一种情况,用 if ...
    处理 True/False 两种情况,用 if ... else ...
    处理多种情况,用 if ... elif ... elif ... else ...
    迭代有序数据类型,用 for ... in ...,如果需要处理没有 break 发生的情况,用 for ... else ...
    其它循环,用 while ...
    与循环相关的语句还有 continue、break、pass
    函数从控制流角度去看其实就是子程序

    相关文章

      网友评论

          本文标题:《自学是门手艺》读书笔记9

          本文链接:https://www.haomeiwen.com/subject/jrmikctx.html