Comments interposed:-

On 09/11/2020 08:14, 2qdxy4rzwzuui...@potatochowder.com wrote:
On 2020-11-08 at 19:00:34 +0000,
Peter Pearson <pkpearson@nowhere.invalid> wrote:
On Sun, 8 Nov 2020 13:50:19 -0500, Quentin Bock <qberz2...@gmail.com> wrote:
Errors say that add takes 1 positional argument but 3 were given? Does this
limit how many numbers I can have or do I need other variables?
Here is what I have:
def add(numbers):
    total = 1
    for x in numbers:
           total += x
    return total
print(add(1999, -672, 84))

Your function "add" expects a single argument that is a list
of numbers.  You're passing it three arguments, each a number.
Try add([1999, -672, 84]).


Minor point ('here'): aren't arguments passed as a tuple? (cf "list")

[next point probably more advanced than OP requires]
Major 'gotchas' elsewhere: remember the difference between passing an immutable, cf a mutable, argument (tuple cf list)! Also related, functions' name-spaces:

>>> my_list = [ 1, 2, 3 ]
>>> def function1( any_list ):
...     any_list = [ 4, 5, 6 ]
...
>>> function1( my_list )
>>> my_list
[1, 2, 3]
>>> def function2( any_list ):
...     any_list.append( [ 4, 5, 6 ] )
...
>>> function2( my_list )
>>> my_list
[1, 2, 3, [4, 5, 6]]

- neither of which works with tuples...

Some refer to such mutable 'flexibility' as a "side-effect" and thus undesirable/to be avoided.


Or change add to accept an arbitrary number of arguments and collect
them into a tuple:

     def add(*numbers):
         # then the rest of the function as before


+1


BTW, why initialize total to 1?

Because OP copied 'multiply' code, completed earlier?


[OP]
Once you have this code working, as above, consider refactoring to use sum()...


Web.Refs:
https://docs.python.org/3/library/functions.html
https://riptutorial.com/python/example/28509/mutable-and-immutable-as-arguments
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to