Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Collections (2016, retired 2019) Tuples Packing

Nader Alharbi
Nader Alharbi
2,253 Points

Tuples packing

Hello everyone. I already answered and passed this question with this code below

def multiply(*numbers):
    total = 1
    for number in numbers:
        total = total * number
    return total

There was a hint given by the instructor, Slices (might) be helpful here.

My question is, how can i use the slice method to solve this problem? why did the instructor give me this hint?

1 Answer

Louise St. Germain
Louise St. Germain
19,424 Points

Hello Nader,

Good question! Your answer above is fine.

You could in theory have also used a recursive function with some slicing, which would follow this format:

def multiply(*numbers):
    # if tuple length is longer than one:
        # return first item in tuple * multiply(remaining items in the tuple - this would be a slice)
        # (the above line is the recursion since the function is calling itself again)
    # else, if there is just one item in the tuple, return it without doing anything to it.
    # (the above line is what will end the recursion.)

I hope this gives some ideas!

Nader Alharbi
Nader Alharbi
2,253 Points

Well explained. Thank you :)

Chris Freeman
Chris Freeman
Treehouse Moderator 68,457 Points

Here’s a slice version, though I don’t see how this a better the OP solution.

def multiply(*args):
    nums = list(args)
    while len(nums) > 1:
        nums[:2] = [nums[0] * nums[1]]
    return nums[0]