我有一個函數需要兩個輸入,並將返回一個元組數組,其中給定元組中的兩個數字與賦給該函數的兩個數字具有完全相同的比率!爲什麼我的函數不總是返回正確的列表?
所以一切工作正常,但由於某種原因,在某些情況下,它不拾取每個元組。下面是它的一個例子,我不知道爲什麼:
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