Python程序设计基础与应用
上QQ阅读APP看书,第一时间看更新

4.1 条件表达式

在选择结构和循环结构中,都要根据条件表达式的值来确定下一步的执行流程。条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。举例如下。

     > > > if 666:                  #使用整数作为条件表达式
        print(9)


9 > > > a = [3, 2, 1] > > > if a: #使用列表作为条件表达式 print(a)

[3, 2, 1] > > > a = [] > > > if a: #空列表等价于False print(a) else: print('empty')

empty > > > i = s = 0 > > > while i <= 10: #使用关系表达式作为条件表达式 s += i i += 1

> > > print(s) 55 > > > i = s = 0 > > > while True: #使用常量True作为条件表达式 s += i i += 1 if i > 10: #符合特定条件时使用break语句退出循环 break

> > > print(s) 55 > > > s = 0 > > > for i in range(0, 11, 1): #遍历序列元素 s += i

> > > print(s) 55

在前面2.2节已经介绍过Python的各种运算符,这里再回顾一下几个在条件表达式中比较常用的运算符。

(1)关系运算符

Python中的关系运算符可以连续使用,这样不仅可以减少代码量,也比较符合人类的思维方式。举例如下。

     > > > print(1<2<3)              #等价于1<2 and 2<3
    True
     > > > print(1<2 >3)
    False
     > > > print(1<3 >2)
    True

在Python语法中,条件表达式中不允许使用赋值运算符“=”,避免了误将关系运算符“==”写作赋值运算符“=”带来的麻烦。在条件表达式中使用赋值运算符“=”将抛出异常,提示语法错误。

     > > > if age=40:                #条件表达式中不允许使用赋值运算符
    SyntaxError: invalid syntax

(2)逻辑运算符

逻辑运算符and、or、not分别表示逻辑与、逻辑或、逻辑非。对于and而言,必须两侧的表达式都等价于True,整个表达式才等价于True;对于or而言,只要两侧的表达式中有一个等价于True,整个表达式就等价于True;对于not而言,如果后面的表达式等价于False,整个表达式就等价于True。

     > > > 3 and 5               #整个表达式的值是最后一个计算的子表达式的值
    5
     > > > 3 or 5
    3
     > > > 0 and 5               #0等价于False
    0
     > > > 0 or 5
    5
     > > > not [1, 2, 3]        #非空列表等价于True
    False
     > > > not {}                #空字典等价于False
    True