Python:如果第一个变量是True,检查第二个变量?

时间:2015-03-21 08:33:30

标签: python if-statement python-3.x

我有一个脚本通过if语句检查bool,然后执行代码。我想做的是这样做:

if variable a is True, check if b is True and execute code
if variable a is False, execute the same code mentioned before

我目前拥有的简化版本是:

if a:
    if b:
        print('foo')
else:
    print('foo')

有没有更好的方法来执行此操作,而不需要我两次编写print('foo')

2 个答案:

答案 0 :(得分:13)

if not a or (a and b):
    print('foo')

让我们一步一步地说: 何时执行print('foo')

  1. ab都是True
  2. 执行else时,else是什么?与之前的if相反,not a
  3. 最后,您希望在一个案例或另一个案例中显示'foo'

    编辑:或者,通过简化逻辑方程式:

    注意: 您可能希望避免这种情况,除非您知道自己在做什么!清晰度往往比短缺更好。相信我的建议!我经历过那里! ;)

    if not a or b: 
       print('foo')
    

    因为如果not a不是True,那么a必须是Trueor的第二部分),所以a and b可以简化为b(因为在这种情况下我们确实知道aTrue,所以a and bTrue and b相同所以我们可以安全地放弃第一部分。

答案 1 :(得分:0)

虽然JeromeJ的答案是正确的,但另一种选择可能是:

print("foo" if ((not a) or (a and b)) else '')

如果不打印" foo"它会打印一个空白行。

如果您不希望这种情况发生,您可以像这样利用它:

print("foo") if ((not a) or (a and b)) else ''

''或其他任何东西都可以使用,因为它会在性质上被抛弃。