我目前正在尝试创建一个可以分解三项式的计算机程序。对于我的算法的一部分,我需要检查最小的系数是否进入了较大的系数。目前,我一直将系数存储在一个数组中(按升序排序)。要检查数字是否相互匹配,我使用以下代码:
if (array[1] % array[0]) and (array[2] % array[0]) == 0:
print "YAY"
else:
print "FAIL"
但是,当我尝试将值 3、6 和 9 输入到我的数组中时,程序以FAIL. 为什么是这样?
我觉得你需要改变
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:
这里的问题在于 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:
你可能想要
if (array[1] % array[0] == 0) and (array[2] % array[0] == 0):
您的条件有两个组成部分,但您只比较第二个。尝试这个:
if (array[1] % array[0]) == 0 and (array[2] % array[0]) == 0:
print "YAY"
else:
print "FAIL"
您的问题是(array[1] % array[0])单独测试 - 如果余数为零,就像在您的示例中一样,它的计算结果为假(0 为假,<> 0 为真)。