def makes10(a, b):
return ((a or b) is 10) or (a+b is 10)
makes10(9, 10) False
上記が以下と同じであることを願っていますが、異なる結果が返されます。
def makes10(a, b):
return (a == 10 or b == 10 or a+b == 10)
makes10(9, 10) True
def makes10(a, b):
return ((a or b) is 10) or (a+b is 10)
makes10(9, 10) False
上記が以下と同じであることを願っていますが、異なる結果が返されます。
def makes10(a, b):
return (a == 10 or b == 10 or a+b == 10)
makes10(9, 10) True
>>> (1 or 10) is 10
False
>>> (10 or 1) is 10
True
>>> (1 or 10)
1
or and を使用して、これらの数値のいずれかが 10 であるかどうかを確認することはできません...
make10() の一番下のバージョンは、おそらく進むべき道です。@Woobleが言ったように、整数値を比較するために使用しないでください。
Python は a と b を 2 つの異なるオブジェクトとして受け取ります。
「is」を使用するとオブジェクトが比較されますが、「==」は値による比較を行います。
たとえば、a=10 の場合、
a==10 は true を返し、a is 10 は false を返す必要があります