2017-06-12 385 views
-2

当我运行这段代码时,即使customFunction最后有一个(y),也总是打印1。我希望它能打印'其他'版本,0。我看不出有什么不对,我希望有人能帮助我。Python:if语句不执行else部分

def customFunction(n): 
    if n == x: 
     print ("1") 
    else: 
     print ("0") 

x = str() 
y = str() 
n = y 
customFunction(y) 
+4

'n'和'x'和'y'都等于'''','n == x'将为'True'。 –

+0

我们知道,但@JimFasarakisHilliard在这里是正确的。所有的变量都是'''' –

+0

请注意,外部代码中的'n'与函数内的'n'不是同一个变量。 – cdarke

回答

3

这是因为x和y都相同。看到你只需输入 x = str()y= str()即意味着x和y都是<class 'str'>

两者都是空字符串。 n == x == y == ''

试试这个在Python解释:

>>> x = str() 
>>> y = str() 
>>> type(x) 
<class 'str'> 
>>> type(y) 
<class 'str'> 
>>> x==y 
True 
>>> print(x) 
         #nothing is printed 
>>> print(y) 
         #nothing is printed 

因此,无论是相等的所有的时间。所以你的if条件一直满足从而打印1一直。

如果你想要执行else部分,那么xy应该是不同的。 尝试:

>>> x = str(1) 
>>> y = str(2) 
>>> print(x) 
1 
>>> print(y) 
2 
>>> x==y 
False 

现在都是不同的,所以你else部分将被执行。