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 (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 回答
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 回答
0

你可能想要

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

您的条件有两个组成部分,但您只比较第二个。尝试这个:

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

您的问题是(array[1] % array[0])单独测试 - 如果余数为零,就像在您的示例中一样,它的计算结果为假(0 为假,<> 0 为真)。

于 2013-04-10T02:25:52.347 回答