Python Forum

Full Version: TypeError: add() missing 2 required positional arguments
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello,I am new to parameters and I am having difficulties understanding my code does not work.




# Tables

Table_A = 0
Table_B = 0
Table_C = 0

# Seats remaining

seat_A = 4
seat_B = 6
seat_C = 2

def add(user_In,Table,Seat):
    for i in range(user_In):
        Table += 1
        Seat -= 1
    return(Table)

def sit():
    global Table_A, Table_B, Table_C, seat_A, seat_B, seat_C
    while True:
        time.sleep(1)
        # Showing Tabls
        print("\nShowing Tables\n")
        time.sleep(1)
        # Table A
        print("Table - A has -", (Table_A), "- people / -", (seat_A), "- seats remaining")
        # Table B
        print("Table - B has -", (Table_B), "- people / -", (seat_B), "- seats remaining")
        # Table C
        print("Table - C has -", (Table_C), "- people / -", (seat_C), "- seats remaining\n")
        time.sleep(1)
        # User Input
        user_In = input ("Which table would you like to choose: ")
        user_In = user_In.upper()
        if user_In == "A":
            Table = Table_A
            Seat = seat_A
            time.sleep(1)
            user_In = int(input("How many people are sitting? Max -" + str(Seat) + ": "))
            # Table A Returned
            print("\nTable - A has - " , add(user_In), "- in it") 
You have defined your add() function to expect 3 arguments (user_In, Table, Seat), but you are calling it with only a single argument in line 42.
(May-28-2020, 12:33 PM)GOTO10 Wrote: [ -> ]You have defined your add() function to expect 3 arguments (user_In, Table, Seat), but you are calling it with only a single argument in line 42.
Thank you! That makes sense!
I don't know the scope of your program but, just wanted to point out that these are already global variables. Not really any need to define them global in your functions.

myvar = 15

def test():
    print(myvar)

test()
Output:
15
(May-28-2020, 12:54 PM)menator01 Wrote: [ -> ]I don't know the scope of your program but, just wanted to point out that these are already global variables. Not really any need to define them global in your functions.

myvar = 15

def test():
    print(myvar)

test()
Output:
15
You are right there is no need for the global variables! Previously I would get an error that said something like "local variable not called" but I guess for this I do not need it, thanks for the advice.
Look at your last chunk of code:


print("\nTable - A has - " , add(user_In), "- in it")


when you call add(user_In) you only enter 1 parameter, when you are supposed to enter 3.
you could alter the function to receive to default to a certain value.

for example when defining the function,

def add(value = deafult) instead of def add(value)