Solving sum == 30

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
from pprint import pprint 

numbers = [9,8,15,10,14,17,11]

result_sets = []

for i, num in enumerate(numbers):
    result_set = [num]
    pos = i + 1
    print pos, result_set, sum(result_set)
    while pos < len(numbers):
        if sum(result_set) + numbers[pos] <= 30:
            result_set.append(numbers[pos])
        print pos, numbers[pos], result_set, sum(result_set)
        pos += 1
    if sum(result_set) == 30:
        print sum(result_set)
        result_sets.append(result_set)
        
pprint(result_sets, indent=2)