2017-10-19 11 views
1

Je suis un nouvel utilisateur de Python. J'écris un code simple pour renvoyer deux choses: l'union de deux ensembles (où chacun d'eux contient des nombres et des mots) aussi bien que la longueur de l'ensemble d'union. J'essaye d'employer assert avec un exemple très simple comme montré ci-dessous, cependant, il continue à me donner AssertionError. Voici comment je définissais la fonction:Comment utiliser correctement (affirmer) dans ce cas avec Python?

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

alors je l'utiliser pour l'exécuter:

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

Cependant, ceci est l'erreur résultant:

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: 

S'il vous plaît conseiller ce qui est la meilleure façon d'utiliser assert dans ce cas, car je dois l'utiliser.

Merci

Répondre

0

En def union au lieu de print retour d'utilisation.

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

Merci beaucoup @Arunmozhi .. qui a fonctionné parfaitement! –

-1

Le problème n'est pas de savoir comment utiliser assert mais ce que vous essayez d'affirmer. Votre fonction union imprime un «résultat» mais renvoie en réalité None (parce que vous n'avez aucune instruction return). Donc, vous êtes en train d'affirmer None == ({-3, 1, 2, 4, 'bob', 'jill'}, 6) qui est False, utilisez return total au lieu de (ou en plus de si vous voulez vraiment) print(total).