如何在这种情况下使用Python正确使用(断言)?

时间:2017-10-19 07:05:31

标签: python set assert

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

由于

2 个答案:

答案 0 :(得分:0)

10-19 12:39:04.399 2912-2912/com.example.myapp I/ExifInterface_JNI: Corrupted image. 10-19 12:39:04.414 2912-2912/com.example.myapp W/ExifInterface: Invalid image: ExifInterface got an unsupported image format file(ExifInterface supports JPEG and some RAW image formats only) or a corrupted JPEG file to ExifInterface. java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:270) at android.media.ExifInterface.getJpegAttributes(ExifInterface.java:1834) at android.media.ExifInterface.loadAttributes(ExifInterface.java:1475) at android.media.ExifInterface.<init>(ExifInterface.java:1174) at com.lostsym.founder.SelectSuitActivity.onActivityResult(SelectSuitActivity.java:621) at android.app.Activity.dispatchActivityResult(Activity.java:6932) at android.app.ActivityThread.deliverResults(ActivityThread.java:4085) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 而不是def union使用return。

print

答案 1 :(得分:-1)

问题不在于如何使用assert,而是在试图断言。您的union功能会打印一个&#34;结果&#34;但实际上会返回None(因为您没有任何return语句)。所以你实际上断言None == ({-3, 1, 2, 4, 'bob', 'jill'}, 6) False,使用return total而不是(或者如果你真的想要的话)print(total)