2.9.1 条件判断的组合

在实际编程中,条件判断中牵涉到的条件很有可能不止一个,我们需要对这些条件进行组合,构成最终的条件判断逻辑。

这其中涉及的关键字不多,如表2-8所示。

表2-8 Python的逻辑组合关键字

用and关键字,筛选计算机专业的男生。


if sex == 'male' and major == 'cs':
    print('yes')

用or关键字,筛选计算机或者电子专业的学生。


if major == 'cs' or major == 'ee':
    print('yes')

更复杂一点的情况,筛选计算机专业的男生或者电子专业的女生。


if major == 'cs' and sex == 'male' or major == 'ee' and sex == 'female':
    print('yes')

这段代码可以得到我们想要的结果,但是理解起来已经不是那么直观了,需要读者对操作符的优先级比较熟悉。

就好比在数学里不同的运算符有优先级一样,在Python语言里,逻辑处理的关键字也有优先级,and的优先级比or要高。

所以,这行代码中的表达式不是从左到右逐个计算的,而是优先级更高的先计算。

但是,在实际编程中我们要尽量避免写这样的代码,因为这样的代码需要写代码的人对优先级非常熟悉,同时还要求看代码的人也对此非常熟悉,这是很难达到的理想状态。所以,在必要的时候我们可以使用括号来澄清和强调逻辑,因为括号的优先级是所有运算符中最高的。


if (major == 'cs' and sex == 'male') or (major == 'ee' and sex == 'female'):
    print('yes')

条件判断的语法并不复杂,难点在于如何将现实需求准确地转化为正确且可读的代码。