上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