Python :如果"if"语句有两个条件,则"if"函数不起作用



我使用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()

输出什么都没有!纳达!没有"你好"或"你好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,尽管我说这不是问题所在,但这篇文章确实帮助了我解决了这个问题,它还提醒我在做任何事情之前都要仔细检查一下,所以,是的,感谢任何帮助我的人:(

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

解决方案2:在声明之前将"zen"one_answers"zen2"声明为global。

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

我想这就是您想要实现的:

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)

最新更新