我正在用Python学习基本的布尔逻辑.我理解了相等的运算符,但是当ands和ors被抛入时会感到困惑.例如,看看下面的代码:
people = 20
cats = 30
dogs = 15
if people < cats:
print "too many cats! the world is doomed!"
if people == cats or dogs == cats:
print "this is too hard"
Run Code Online (Sandbox Code Playgroud)
我理解第一个if语句以及它打印的原因.我不知道如何评估第二个if语句.我怎么能改变它来打印那条线?
谢谢你的帮助!
and要求表达式中的所有部分都True为整个表达式求值True.
or一旦表达式的任何部分评估True整个表达式,就不那么挑剔了True.
在这种情况下,您可能会遇到短路这个术语.它只是意味着我们一旦确定结果就停止评估表达式.
因此,and一旦我们找到一个评估的部分,我们就可以停止查看表达式的其余部分,False因为此时表达式永远无法计算True.
同样地,or一旦我们找到一个部分True,我们就会知道整个表达式,True并且没有理由进一步观察.
对于您发布的代码示例:
if people == cats or dogs == cats:
print "this is too hard"
Run Code Online (Sandbox Code Playgroud)
如果任何一个的这些,或两者 people == cats,dogs == cats评价True,在整个表达式if语句将变为True.由于它们都不是True,因此语句中的if表达式失败,即is False,并且不执行print语句.
最后,如果要打印要执行的语句,则必须确保对布尔表达式求值True.一种方法是将值更改为
dogsto,30因为那样dogs == cats就True足以制作整个表达式True并使打印执行.
| 归档时间: |
|
| 查看次数: |
2955 次 |
| 最近记录: |