2017-06-12 5 views
-2

このコードを実行すると、最後のcustomFunctionに(y)があっても常に1が出力されます。私はそれが 'else'バージョン、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が異なる必要があります。 試してください:あなたのelse部分が実行されますので、

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

は今の両方が異なっています。

関連する問題