概 述:在python中,除了一条一条顺序执行的顺序语句之外,还会有让程序选择是否执行语句块的条件语句。
1 python语句块
所谓的语句块,就是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句。语句块的创建是在语句前面放置空格或者tab符。注意的是,语句块中的每一行语句都应该缩进相同的量。
在python中,用冒号(:)来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)。当程序回退到和已闭合的块一样的缩进量时,代表当前语句块已经结束。
Python语句块的伪代码可以表示成如下的形式:
1 2 3 4 5 6 | This is a line This is another line This is a block Continuing the same block The last line of this block There we escaped the inner block |
2 条件
2.1 布尔变量(boolean)
真值,也就是布尔值,只有两个量,True和False。
下面的值在作为布尔表达式的时候,会被解释器看做是假(False): False None 0 "" () [] {}。也就是说,标准值False和None,所有类型的数字0,空序列,以及空的字典都为假,其他的一切都被解释为真,包括特殊值True。在python中,所有的值都能被解释成为真值。
布尔值True和False属于布尔值,bool函数可以将其他的值转换成布尔值,包括list、str以及tuple。因为所有的值都可以用作布尔值,所以python会自动转换这些值,不需要对它们进行显示转换。其相应的操作说明如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> bool(None) False >>> bool(0) False >>> bool(0.0) False >>> bool("") False >>> bool(()) False >>> bool([]) False >>> bool({}) False >>> bool(42) True >>> bool("I Love You") True |
尽管[]和""都是假值,但它们本身是不相同的,如下所示:
1 2 3 4 | >>> bool([]) == bool("") True >>> [] == "" False |
2.2 比较运算符
用在条件中的基本运算符是比较运算符,它们用来比较其他对象,python中的比较运算符如下所示:
表达式 | 描述 |
x == y | x 等于 y |
x < y | x 小于 y |
x > y | x 大于 y |
x <= y | x 小于等于 y |
x >= y | x 大于等于 y |
x != y | x 不等于 y |
x is y | x 和 y是同一个对象 |
x is not y | x 和 y不是同一个对象 |
x in y | x 是 y容器中的成员 |
x not in y | x 不是 y容器中的成员 |
2.3 相等运算符
如果想要知道两个东西是否相等,可使用相等运算符,即两个等号 == 。
1 2 3 4 | >>> "foo" == "foo" True >>> "foo" == "bar" False |
2.4 同一运算符
同一运算符 is 表示的是两个东西是否是同一对象,它与 == 是不同的。其区别如下
1 2 3 4 5 6 7 8 9 10 | >>> x = y = [1,2,3] >>> z = [1,2,3] >>> x == y True >>> x == z True >>> x is y True >>> x is z False |
根据上述的代码,可发现is运算符是判定同一性而不是相等性。其中变量x和变量y都绑定在同一个列表上,而变量z被绑定在另一个具有相等值的列表上。它们的值可能相等,但是却不是同一个对象。总结:使用==运算符用来判定两个对象是否相等,使用is判定两个对象是否是同一对象。
2.5 成员资格运算符
成员资格运算符in可以像其他比较运算符一样在条件语句中使用。
1 2 | >>> "lx" in "i love you, lx" True |
2.6 字符串和序列比较
字符串可以按照字典序列进行比较。
1 2 3 4 | >>> "alpha" < "beta" True >>> [1,2] < [2,1] True |
3 条件语句
3.1 if语句
if语句可以实现条件执行。如果条件判定为真,则后面的语句块就会被执行,如果条件判定为假,语句块就不会被执行。
1 2 3 4 5 6 7 | >>> name = raw_input('What is your name?\n') What is your name? Gumby >>> if name.endswith('Gumby'): ... print 'Hello, Gumby!' ... Hello, Gumby! |
3.2 else语句
可以用else子句增加一种选择,作为if语句的一部分。如果条件判定为假,就转入到else子句中的代码块。
1 2 3 4 5 6 7 8 9 | >>> name = raw_input('What is your name?\n') What is your name? XLX >>> if name.endswith('Gumby'): ... print 'Hello, Gumby!' ... else: ... print 'Hello, stranger!' ... Hello, stranger! |
3.2 elif语句
如果需要检查多个条件,可以使用elif。
1 2 3 4 5 6 7 8 9 10 11 | >>> num = input('Enter a number:\n') Enter a number: 5 >>> if num > 0: ... print 'The number is positive' ... elif num < 0: ... print 'The number is negative' ... else: ... print 'The number is zero' ... The number is positive |