该函数应返回一个包含重复数据参数的数组

时间:2017-03-24 08:24:44

标签: python-2.7

我的代码没有通过一些隐藏的测试,我需要帮助

单元测试

def replicate_recur(a, b):
       #checking for correctness of 'a' type
       if not isinstance(a, int) and not isinstance(a, str):
           raise ValueError

       #checking for correctness of 'b' type
       if not isinstance(b, int) and not isinstance(b, str):
           raise ValueError

    #exit from function
       if a <= 0:
           return []

       res = replicate_recur(a - 1, b)

       res.append(b)

       #returning of result
       return res

    #iterative function
    def replicate_iter(a, b):
       #checking for correctness of 'a' type
       if not isinstance(a, int):
           raise ValueError

       res = []

       for i in range(a):
           res.append(b)

       return res

    a, b = (3,5)
    try:
       print replicate_recur(a, b)
    except ValueError:
       print "Wrong 'a or b' type"

    try:
       print replicate_iter(a, b)
    except ValueError:
       print "Wrong 'a or b' type"

1 个答案:

答案 0 :(得分:0)

不确定它是否完全覆盖了我们无法猜测的“隐藏测试”,但是:

if not isinstance(a, int) and not isinstance(a, str):

为什么接受a(或b)为字符串?

如果你通过了,那么在评估TypeError时会得到a - 1,这与ValueError不同(之前if a <= 0:在python 3中与另一个TypeError失败{1}}例外)

由于主程序没有捕获TypeError,因此测试可能会失败。