我有一个脚本通过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')
?
答案 0 :(得分:13)
if not a or (a and b):
print('foo')
让我们一步一步地说:
何时执行print('foo')
?
a
和b
都是True
。else
时,else
是什么?与之前的if
相反,not a
。最后,您希望在一个案例或另一个案例中显示'foo'
。
编辑:或者,通过简化逻辑方程式:
注意: 您可能希望避免这种情况,除非您知道自己在做什么!清晰度往往比短缺更好。相信我的建议!我经历过那里! ;)
if not a or b:
print('foo')
因为如果not a
不是True
,那么a
必须是True
(or
的第二部分),所以a and b
可以简化为b
(因为在这种情况下我们确实知道a
是True
,所以a and b
与True 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 ''
''
或其他任何东西都可以使用,因为它会在性质上被抛弃。