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