在Python中检查数字是否进入另一个数字的问题

时间:2013-04-10 02:22:44

标签: python arrays algebra

我目前正在尝试创建一个能够影响三项式的计算机程序。对于我的算法的一部分,我需要检查最小系数是否进入较大的系数。目前,我一直将系数存储在一个数组中(按升序排序)。为了检查这些数字是否相互匹配,我使用以下代码:

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

但是,当我尝试将值3,6和9输入到我的数组中时,程序以FAIL响应。这是为什么?

4 个答案:

答案 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为真)。