{{ selected_gold.title }}

  • ¥ {{ selected_gold.original_price }}
  • ¥ {{ selected_gold.price }}
  • {{ selected_gold.number_of_order }} 人订阅
  • {{ selected_gold.total_likers_count }}
    由 {{ selected_gold.creator_name }} 编辑

    {{ title }}

    请登录购买({{ selected_gold.price }}元),即可解锁剩余教程
    点击购买

    • Air
    • 2018年7月31日

    流程控制

    流程控制也是Python的基本能力之一,它的作用是控制程序执行的路径,通常需要搭配条件来使用。只有满足条件之后,解释器才会执行对应的指令,而避开其它路径中的指令。它经常出现在各大编程场景,因此,也是必须掌握的。

    本节将介绍以下3种流程控制方式:

    • 单个if条件
    • 2个条件的if...else...
    • 多个条件的if ... elif...else...

    单个if条件

    假设你想设计一个函数,这个函数的功能是:输入一个过去的时间点,根据当前时间点与过去时间点的跨度,输出不同格式的时间提示。如果要实现这个功能,我们可以使用单个if条件来完成,以下就是相对应的例子。

    import time, datetime
    def datetime_filter(t):
        delta = int(time.time() - t)
        if delta < 60:
            return '1分钟前'
        if delta < 3600:
            return '%s分钟前' % (delta // 60)
        if delta < 86400:
            return '%s小时前' % (delta // 3600)
        if delta < 604800:
            return '%s天前' % (delta // 86400)
        dt = datetime.datetime.fromtimestamp(t)
        return '%s%s%s日' % (dt.year, dt.month, dt.day)
    

    它的执行路径是:

    • 如果delta < 60True则返回以分钟为单位的计算结果,否则继续执行以下指令,
    • 如果delta < 3600True则返回以分钟为单位的计算结果,否则继续执行以下指令,
    • 如果delta < 86400True则返回以小时为单位的计算结果,否则继续执行以下指令,
    • 如果delta < 604800True则返回以天为单位的计算结果,否则继续执行以下指令,
    • 如果上述条件都为False则返回以年月日为单位的计算结果。

    2个条件的if...else...

    以下是来自digwebs的代码片段

    if __name__ == '__main__':
        digwebs_app.run(9999, host='0.0.0.0')
    else:
        wsgi_app = digwebs_app.get_wsgi_application()
    

    它的含义是:如果__name__ == '__main__'True,那么Python解释器将执行指令digwebs_app.run(9999, host='0.0.0.0'),否则Python解释器将执行wsgi_app = digwebs_app.get_wsgi_application()

    多个条件的if ... elif...else...

    Python中没有switch ... case ...,取而代之的是多个条件的if ... elif ... else ...。下面的例子将字符串v中除了字母和数字的其它字符替换成空格,最终s的值是I Love Digwebs

    s = ``
    v = `I~-Lo!#$%v^^^^e+++Dig[we}bs`
    for ch in v:
        if ch>='0' and ch<='9':
            s = s + ch
        elif ch>='A' and ch<='Z':
            s = s + ch
        elif ch>='a' and ch<='z':
            s = s + ch
        else:
            s = s + ' '
    

    总结

    以上就是Python支持的3种流程控制语句,通常你需要搭配一些条件来使用。它们会经常出现在Python脚本中,因此你必须掌握它们。值得注意的是,Python是通过指令缩进的方式来确定作用域的,因此如果某块逻辑属于同一个条件,那么这块逻辑的缩进需要保持一致。你可能会遇到一种情况:需要反复执行一些任务,这也是流程控制的一部分,只不过它是Python中的另外一个经常用到的能力:循环