2013-04-10 44 views
0

我目前正在尝试创建一个可以计算三项式的计算机程序。对于我的部分算法,我需要检查最小系数是否进入较大系数。目前,我一直在一个数组中存储系数(按升序排序)。要检查数字进入彼此,我用这个代码:检查一个数字是否进入另一个Python的问题

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

但是,当我试图进入值3,6,9成我的阵列,程序相应地FAIL。为什么是这样?

+0

为什么这个downvoted?由于作业的可能性? upvoted - – TankorSmash 2013-04-10 02:42:43

+0

- 缩小到失败的代码。比翻阅整个程序要好得多 – 2013-04-10 02:48:02

+0

@TankorSmash IDK - 同样,这不是家庭作业 - 我一直想知道如何将我们在学校学到的代数应用到python编程中。 – xxmbabanexx 2013-04-10 02:48:13

回答

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: 
0

你可能想

if (array[1] % array[0] == 0) and (array[2] % array[0] == 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是真实的)。

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: 
相关问题