2017-10-19 191 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)

相關問題