from fractions import Fraction # # from __future__ import division # def P(event, space): # "在一个等可能发生的样本空间中,事件发生的概率" # return Fraction(len(event & space), len(space)) # # D = {1, 2, 3, 4, 5, 6} # even = {2, 4} # aaa= P(even, D) # print(aaa) def P(event, space): """在一个等可能发生的样本空间中,事件发生的概率 . 事件可以是输出值的集合,或者是一个断言(属于事件的输出值为真)""" if callable(event): event = such_that(event, space) return Fraction(len(event & space), len(space)) def such_that(predicate, collection): "集合中满足断言为真的元素构成的子集" return {e for e in collection if predicate(e)} def even(n): return n%2 == 0 D = {1, 2, 3, 4, 5, 6} print( such_that(even, D))