status

校对

完成度100%

PCS110 逻辑分支

概述

这里讲的逻辑分支主要是指if ... else ...语句, if ... else ...也是比较重要的流程控制语句之一, 使用比较简单. 基本语法和其他语言的if语句很类似. 因为Python中没有提供switch语句和三元运算符,但可以通过if语句来实现.

使用

最基本的用法

以下一段代码使用if分支实现比较两个数的大小:

   1 # -*- coding: utf-8 -*-
   2 
   3 a = int(raw_input("a = "))           #从键盘输入一个int类型的变量
   4 b = int(raw_input("b = "))
   5 if a == b:
   6    print 'a 等于 b'
   7 elif a < b:
   8    print 'a 小于 b'
   9 elif a > b:
  10    print 'a 大于 b'
  11 else:
  12    print '在本宇宙中这是不可能滴!'

elif就是else if的缩写。

使用if代替switch

Python没有switch语句,不过if elif else组合已经足以应付大部分情况。而对于另外的一种switch应用场景,python 还有更加优雅的方式来处理:

    # 伪码 根据输入的不同参数选择程序的不同行为
    switch( sys.argv[1] ):
        case '-e':
            walk_cd(); break;
        case '-d':
            search_cd(); break;
        ...
        default:
            raise CommandException("Unknown Commend: " + sys.argv[1])

    # 使用 if 替代
    if sys.argv[1]=='-e':
        walk_cd()
    elif sys.argv[1]=='-d':
        search_cd()
    ...
    else:
        raise CommandException("Unknown Command: " + sys.argv[1])

    # 更好的做法
    commands = {
        '-e'   : walk_cd,
        '-d'   : search_cd,
    }
    try:
        commands[ sys.argv[1] ]()
    except KeyError:
        raise CommandException("Unknown Command: " + sys.argv[1])

最后一种方式不管从可读性(这是显然的)、性能(哈希表 vs 普通查找)上都高出很多。另外最后一种做法将参数与行为的映射完全独立出来了,一来修改起来极其方便,到时候也很容易将它们分离到配置文件中去。

三元运算符

三元运算符类似于C语言中的条件表达式,在Python中可以用下述代码实现:

>>> def get_length(s):
...     # 等价于:
...     # if(s!=None)
...     #     return len(s)
...     # else:
...     #     return len('None')
...     return len(s) if s!=None else len('None')
...
>>> get_length(None)
4

使用 and和or 技巧可以将上述代码写成:

>>> def get_length(s):
...     return s!=None and len(s) or len('None')
...
>>> get_length(None)
4

不过,第一种写法看起来更易读些。

小结

if ... else ...语句是在经常用的语法. 上面介绍了其最基本的使用, 在下面的链接中可以找到更多的资料:


::Lizzie [2008/06/23 13:24:00]

Name Password4deL ;) :( X-( B-)