这节课会让你以更优雅的方式做一些复杂的案例检查,通过使用两个新的Python语言。
- 在
if «C»
从句之后,如果C
错误,会运行else
从句。 - 结合布尔条件,通过使用
A and B
,A or B
和not A
else
编写程序时一个普遍的任务是你想要检验一些条件,根据条件正确与否,执行一个或另一个动作。之前,有一个练习要你做一些事情如果年龄age
小于0,做另一些事情如果年龄age
大于等于0;下面是一个参考答案
if age >= 0: print('You are not necessarily a time traveller') if age < 0: print('You are a time traveller')现在让我们使用
else
重新编写一下。
通常来说,你通过如下的语句来使用else
:
if «test»: «true-body» # an indented block else: «false-body» # another indented blockPython会进行测试。如果测试通过,那么通过之后做一些事情,如果测试没通过,那么做另一些事情。
else
的哲学
我们使用else
没有新的功能,但是它确实让我们的代码更便于阅读,调试,维护。下面的两段代码做了同一件事:
版本A
if height < 256: print('Too short for this ride') else: print('Welcome aboard!') |
版本B
if height < 256: print('Too short for this ride') if height >= 256: print('Welcome aboard!') |
两个都做了同一件事,B甚至不需要else
。然而,大部分编程人员会觉得A更好。比如,对于A来说,改变条件(比如使用128而不是256)仅需要一处改动而不是两处。同样,A可以立刻被人读懂,而在B中你需要检查两个条件通过与否。
Python内建方程abs(x) 可以用来计算x 的绝对值。上面的题目中不允许你使用,但是在以后的程序中你可以使用。 |
elif
Python还有另一个关键词elif
,可以让一行中的不同条件查看起来更简单。最基本的使用elif
的模式如下:
if «test1»: «body1» # 如果test1正确则运行 elif «test2»: «body2» # 如果test1错误,test2正确,则运行正如你所想的一样,
elif
代表"else if",因为它等同于在else里面加一个if。但是,使用 elif 就会省下很多 代码,同时也会省下很多缩进,让你的程序更容易阅读,调试,编辑。此外,你可以使用无数次elif语句在同一行,甚至或在最后加上一个else
语句:
if «test1»: «body1» # 如果test1正确则运行 elif «test2»: «body2» # 如果test1错误,test2正确,则运行 elif «test3»: «body3» # 如果test1和test2为错误,test3为正确,则运行 else: # 最后这两行是可选的 «else-body» # 如果所有tests都为错误,则运行
这是一个在循环中使用 elif 的例子。你能猜到结果是什么 吗?
布尔运算符:and
, or
, not
你可以通过使用"and
","or
"和"not
"结合布尔运算符,逻辑和英文一致。
A and B
是正确的,如果A
正确,B
也正确;是错误的如果任何一个是错的(比如,你会淋湿,如果下雨了and
你忘带伞了)。A or B
是正确的,如果A
正确或B
正确;是错误的,如果两个都是错误的(比如,学校是关着的,如果是节假日or
是周末)。not A
是正确的,如果A
是错误的;是错误的,如果A
是正确的(比如,你觉得饿,如果你not
吃午饭)
下面是一个程序,自动展示出所有可能性。就像是'乘法表'一样,这个表叫做(逻辑运算)真值表。
下面是一个使用and
的例子,该程序将数字转换成了字母,还做了一些验错。
选择题练习: 摩根律
下面哪一个等同于
A or B
?正确! 这里有一种方式得到答案。首先,
not (A or B)
是正确的,当A
和B
都是错的。同样,(not A) and (not B)
是正确的,当not A
和not B
都是正确的。换句话说, A
和B
都是错的。所以我们得到以下等式:(not A) and (not B) = not (A or B)将
not
放在两侧,所以我们得到not ((not A) and (not B)) = not (not (A or B)),同时
not(not X))
恒等于X
,所以not ((not A) and (not B)) = not (not (A or B)) = A or B。这种改写布尔表达式的方式是De Morgan's laws之一.
运算顺序
布尔运算符有"运算顺序",就像是数学运算也有顺序一样。顺序是
NAO: not (最先级), and, or (最后级)
所以说比如,
not x or y and z
意味着 (not x) or (y and z)
通过使用这些实例,我们将以一个简短的问题来结束这节课。
选择题练习: 运算顺序
正确! 运算方式让这个等价于
A or ((not B) and C)替换值,我们得到
False or ((not True) and True),然后简化得到
False or ((not True) and True)
= False or (False and True)
= False or False
= False