Python:如果“ if”语句具有两个条件,则“ if”功能不起作用

时间:2018-10-30 15:09:41

标签: python

我正在使用python 3.6,我这样写:

zen = 1
zen2 = True
def test():
    if zen == 1 and zen2 == True:
        print ("hello")
        global zen2
        zen2 = False
    else:
        print ("hello 2")

test()

...并且输出没有任何信息! NADA!没有“ hello”也没有“ hello 2”,甚至没有错误!

即使我这样做:

zen = 1
zen2 = True
def test():
    if zen == 1 :
        if zen2 == True:
            print ("hello")
            global zen2
            zen2 = False
        else:
            pass
    else:
        print ("hello 2")

test()

什么都没有!为什么?

编辑:对不起,每个人,在此之前我没有注意到“ else”没有冒号,因此对于某些人来说,它出现了语法错误,现在可能已修复,但仍然没有输出

编辑2:这将令人尴尬,因为由于我使用的是PyCharm并且我的其他文件处于打开状态(在该文件中,未执行任何功能),所以我不小心运行了另一个文件,而不是该“ zen”文件,所以我什么也没得到,因为它。实际上,我从这个“ zen”文件中收到了一个SyntaxError,即使我说这不是问题,这篇文章也确实帮助了我解决问题,并且它还提醒我在做任何事情之前都要仔细检查所有内容,所以是的,感谢那些谁帮助了我:)

3 个答案:

答案 0 :(得分:0)

解决方案1:在函数中传递参数。

解决方案2:在声明之前声明“ zen”和“ zen2”为全局变量。

答案 1 :(得分:0)

您有一些逻辑错误。 使用全局之前,不能使用zend2。 您应该在函数的第一行将变量作为参数传递或声明为全局变量。

答案 2 :(得分:0)

我认为这就是您想要实现的目标:

def test(zen, zen2):
    if zen == 1 and zen2 == True:
        print ("hello")
        zen2 = False
    else:
        print ("hello 2")

test(1, True)

正如一些评论所建议的,如果尝试运行您的代码,它将返回以下内容(在Linux GCC 4.8.2 / Python 3.6.1上):

SyntaxError: name 'zen2' is used prior to global declaration

如果您要更改条件的第一次评估后打印的值,请像这样重写它:

def test(zen, zen2):
    if zen == 1 and zen2 == True:
        print ("hello")
        zen2 = False
        test(zen, zen2)
    else:
        print ("hello 2")

test(1, True)