在涉及多个参数的函数中返回除数?

问题描述:

所以我必须编写一个程序,该程序需要两个参数,一个整数'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.... 

可以使用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]