0
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
4

2 に答える 2

1
>>> (1 or 10) is 10
False
>>> (10 or 1) is 10
True
>>> (1 or 10)
1

or and を使用して、これらの数値のいずれかが 10 であるかどうかを確認することはできません...

make10() の一番下のバージョンは、おそらく進むべき道です。@Woobleが言ったように、整数値を比較するために使用しないでください。

于 2013-07-11T15:58:25.387 に答える
0

Python は a と b を 2 つの異なるオブジェクトとして受け取ります。

「is」を使用するとオブジェクトが比較されますが、「==」は値による比較を行います。

たとえば、a=10 の場合、

a==10 は true を返し、a is 10 は false を返す必要があります

于 2013-07-11T15:56:25.590 に答える