在这种情况下,如何在Python中正确使用(assert)?

2024-05-20 17:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的新用户。我正在编写一个简单的代码来返回两件事:两个集合的并集(其中每个集合都包含数字和单词)以及并集的长度。 我尝试用assert和一个非常简单的例子,如下所示,但是,它一直给我AssertionError。 我是这样定义函数的:

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的最佳方式是什么,因为我必须使用它。你知道吗

谢谢


Tags: 函数代码用户定义数字assert单词两件事
2条回答

def union而不是print中使用return。你知道吗

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

问题不在于如何使用assert,而在于您试图断言什么。您的union函数打印一个“result”,但实际返回None(因为您没有任何return语句)。所以你实际上是在断言None == ({-3, 1, 2, 4, 'bob', 'jill'}, 6),也就是False,使用return total而不是(或者如果你真的想的话,除了print(total))。你知道吗

相关问题 更多 >