import itertools def outcomes(): """ Compute the outcomes from rolling an eight-sided die twice. """ return [[(i,j) for j in xrange(1,9)] for i in xrange(1,9)] def favorable(outcome): """ An outcome if favorable if the sum of both numbers in the outcome is even. """ return sum(outcome)%2==0 a = outcomes() # The size of the sample space print 'Size of sample space:', len(a)*len(a[0]) # The sample space itself for outcome in a: print outcome b = itertools.chain(*a) a = list(b) # The number of favorable outcomes b = [outcome for outcome in a if favorable(outcome)] print 'Favorable outcomes:',len(b)
Standard input is empty
Size of sample space: 64 [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8)] [(2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8)] [(3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8)] [(4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8)] [(5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (5, 7), (5, 8)] [(6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 8)] [(7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6), (7, 7), (7, 8)] [(8, 1), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (8, 8)] Favorable outcomes: 32