2015-04-12 80 views
1

所以我必須編寫一個程序,該程序需要兩個參數,一個整數'num'和一個整數'limit'。然後它必須返回小於或等於num的因數列表。爲了分解更多,'num'的除數是1和'num'之間的數字X,這樣X除以'num'的餘數就是0.如果任何參數不是整數,函數應該返回沒有。在涉及多個參數的函數中返回除數?

這裏是我的意思的例子:

.....除數( 「你好!」,5)應返回None,因爲 「你好」 是一個字符串

.. ...除數( 「23」,5)應返回None,因爲 「23」 是一個字符串

......除數(15,12.34)應該返回None,因爲12.34是一個浮動

......除數(1,5)應該返回[1]

......除數(12,5)應該返回[1,2,3,4]

def divisors(num, limit): 
    if num and limit not type(int): 
     return None 
    else: 
     # I don't know what else to put here to make it divide and return the correct values.... 

回答

0

可以使用isinstance函數來檢查你的參數的類型,然後使用yield返回發電機:

>>> def divisors(num, limit): 
... if isinstance(num,int) and isinstance(limit,int): 
...   for i in range(1,limit): 
...   if num%i==0: 
...    yield i 
... else : 
...  yield None 
... 
>>> list(divisors(12, 5)) 
[1, 2, 3, 4] 
>>> list(divisors('12', 5)) 
[None]