Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如果第一个变量为True,则检查第二个变量?_Python_If Statement_Python 3.x - Fatal编程技术网

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

Python:如果第一个变量为True,则检查第二个变量?,python,if-statement,python-3.x,Python,If Statement,Python 3.x,我有一个脚本,它通过if语句检查bools,然后执行代码。我想做的是使其: 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') 有没有更好的方法不需要我写

我有一个脚本,它通过if语句检查bools,然后执行代码。我想做的是使其:

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')
就可以做到这一点

if not a or (a and b):
    print('foo')
让我们一步一步地讨论这个问题: 何时执行
print('foo')

  • a
    b
    均为
    True
  • 执行
    else
    时,什么是
    else
    ?与前面的
    if
    so
    非a
    相反
  • 最后,您希望在一种情况下显示
    'foo'

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

    注意:除非您知道自己在做什么,否则您可能希望避免这样做!清晰往往比简短好得多。相信我的建议!我经历过那里!;)


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

    虽然杰罗姆的答案是正确的,但另一种选择是:

    print("foo" if ((not a) or (a and b)) else '')
    
    如果不打印“foo”,它将打印一个空行

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

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

    或其他任何东西都可以使用,因为它们会在自然界中被丢弃。

    你也可以阅读更多关于为什么
    ,-a⋁(一)⋀(b)≣——a⋀b
    ,通过学习,和。谢谢!逻辑非常简单,所以我可能不会有任何问题,但我会小心的不,不会。如果条件不满足,它不会做任何事情。我甚至会说你这样做的方式是滥用
    if…else
    表达式。ITYM
    打印(“foo”if((不是a)或(a和b))else“”)
    相反。。。
    print("foo") if ((not a) or (a and b)) else ''