我有一个函数需要两个输入,并将返回一个元组数组,其中给定元组中的两个数字与赋给该函数的两个数字具有完全相同的比率!为什么我的函数不总是返回正确的列表?
所以一切工作正常,但由于某种原因,在某些情况下,它不拾取每个元组。下面是它的一个例子,我不知道为什么:
In [52]: def find_r(num1,num2):
....: ratio = num1/float(num2)
....: ratio = 1/ratio
....: my_list = [(a,int(a * ratio)) for a in range(1,num1) if float(a * ratio).is_integer()] #and a * 1/float(ratio) + a <= num1]
....: return my_list
....:
In [53]: find_r(100,364)
Out[53]: [(75, 273)]
所以它只是返回一个元组,但如果你把两个75和273 3,你得到的25和91的元组,其中有相同的比例!为什么我的功能没有拿起这个实例?
如果有帮助,我怀疑它与is_integer()
方法有关,但我不太确定。
谢谢!
这是有道理的,但不幸的是,我不能检查分数的等价,因为我在做基于具有完全相同的比例项的列表。我只需要清除我所做的非整数,但正如您所指出的那样,某些整数看起来像浮点数,这是我的问题。 – 2013-05-04 18:50:09
@RyanSaxe:比例是一个分数。看到我编辑的答案的方式来做到这一点。 – BrenBarn 2013-05-04 18:57:40