0

私は現在、三項式を因数分解できるコンピューター プログラムを作成しようとしています。私のアルゴリズムの一部として、最小の係数が大きな係数に入るかどうかを確認する必要があります。現在、係数を配列に格納しています(昇順でソート)。数値が互いに一致するかどうかを確認するには、次のコードを使用します。

if (array[1] % array[0]) and (array[2] % array[0]) == 0:
    print "YAY"
else:
    print "FAIL"

しかし、値 3、6、および 9 を配列に入力しようとすると、プログラムはFAIL. どうしてこれなの?

4

4 に答える 4

1

ここでの問題は、if 条件のロジックにあります。そのまま、テストしています:

1. if (array[1] % array[0]) ) is TRUE
2. if (array[2] & array[0]) == 0

これを次のように変更します。

if (array[1] % array[0]) == 0 and (array[2] % array[0]) == 0:
于 2013-04-10T02:27:29.050 に答える
1

変わる必要があると思いますが、

if (array[1] % array[0]) and (array[2] % array[0]) == 0:

これに、

if (array[1] % array[0]) == 0 and (array[2] % array[0]) == 0:

私が知っているどの言語も、あなたが書こうとしているタイプの比較を許可していません。それを表現する別の方法は、その論理とより一致している可能性があります。

if array[1] % array[0] == array[2] % array[0] == 0:
于 2013-04-10T02:25:27.533 に答える
0

あなたはおそらくしたいです

if (array[1] % array[0] == 0) and (array[2] % array[0] == 0):
于 2013-04-10T02:25:46.317 に答える
0

条件には 2 つのコンポーネントがありますが、比較するのは 2 番目のコンポーネントのみです。これを試して:

if (array[1] % array[0]) == 0 and (array[2] % array[0]) == 0:
    print "YAY"
else:
    print "FAIL"

あなたの問題は(array[1] % array[0])単独でテストされることです-あなたの例のように残りがゼロの場合、それはfalseと評価されます(0はfalse、<> 0はtrue)。

于 2013-04-10T02:25:52.347 に答える