How can I adjust the below code to find three numbers instead of two numbers yielding the target amount? I’ve already came across the code below from another question titled “Find two numbers from a list that add up to a specific number”. Thank you.
numbers = [2, 4, 6, 8, 10] #revised so that 3 numbers add up to 12
target_number = 12
for i, number in enumerate(invoices[:-1]):  
    complementary = target_number - number
    if complementary in invoices[i+1:]:  number, complementary))
        break
else: 
    print("No solutions exist")
Advertisement
Answer
If the numbers list is relatively small, you can use the itertools combinations function from the Python standard library.
import itertools numbers = [2, 4, 6, 8, 10] target_number = 12 print([i for i in itertools.combinations(numbers, 3) if sum(i) == target_number])
Which gives the result:
[(2, 4, 6)]