2017-10-19 158 views
1

我是一个非常新的Python用户。我正在写一个简单的代码来返回两件事情:两个集合(其中每个集合都包含数字和单词)以及联合集合的长度。 我想用一个非常简单的例子使用assert,但是,它一直给我AssertionError。 这是我定义的函数:如何在Python中正确使用(assert)?

def union(A, B): 
    AuB = A.union(B) 
    total = (AuB,len(AuB)) 
    print(total) 

然后我用这个来执行它:

A = {1,4,-3, "bob"} 
B = {2,1,-3,"jill"} 
union(A,B) 
assert union(A,B) == ({-3, 1, 2, 4, 'bob', 'jill'}, 6) 

然而,这是所产生的误差:

AssertionError       Traceback (most recent call last) 
<ipython-input-4-cb63795cc161> in <module>() 
     2 B = {2,1,-3,"jill"} 
     3 union(A,B) 
----> 4 assert union(A,B) == ({-3, 1, 2, 4, 'bob', 'jill'}, 6) 

AssertionError: 

请告知是什么在这种情况下使用assert的最佳方式,因为我必须使用它。

感谢

回答

0

def union而不是print使用回报。

def union(A, B): 
    AuB = A.union(B) 
    total = (AuB,len(AuB)) 
    return total 
+0

非常感谢@Arunmozhi ..完美的工作! –

-1

问题不在于如何使用assert,而是您试图断言的内容。您的union函数会打印一个“结果”,但实际上会返回None(因为您没有任何return声明)。所以你实际上主张None == ({-3, 1, 2, 4, 'bob', 'jill'}, 6)这是False,使用return total而不是(或除了如果你真的想)print(total)