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

时间:2015-04-12 21:54:08

标签: python-3.x

所以我必须编写一个带有两个参数的程序,一个整数' num'和一个整数'限制'。然后它必须返回小于或等于num的除数列表。为了更多地分解它,“数字”的除数。是1和#39之间的数字X这样剩下的就是“数字”和“数字”。 by X是0.如果任何参数不是整数,则该函数应该返回None。

这是我的意思的一个例子:

  

..... divisors(" hello!",5)应该返回None,因为"你好"是一个字符串

     

..... divisors(" 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....

1 个答案:

答案 0 :(得分: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]