Вы излишне определили, что ваша функция принимает два параметра, которые вы не можете предоставить, поскольку они определены внутри функции:
def calculation (argnum1, argnum2): # argnum1 and argnum2 are immediately discarded
argnum1 = float (input("Enter your fist number: ")) # argnum1 is defined here
argnum2 = float (input("Enter your second number: "))
# do things with argnum1 and argnum2
...
calculation(argnum1, argnum2) # argnum1 and argnum2 are not defined yet
Обратите внимание, что тело функции выполняется только при вызове функции. К тому времени, когда вы вызываете calculation
, argnum1
и argnum2
, не определены - и даже тогда они определяются только в другой области.
В идеале переместите input
вызов за пределы вашей функции:
def calculation (argnum1, argnum2):
# do things with argnum1 and argnum2
...
argnum1 = float (input("Enter your fist number: ")) # argnum1 is defined here
argnum2 = float (input("Enter your second number: "))
calculation(argnum1, argnum2)
Обратите внимание, что вы должны определить свою функцию вне цикла. В противном случае, это не нужно переопределять на каждой итерации. Также нет смысла иметь несколько return
операторов друг за другом.
Ваш код должен выглядеть следующим образом:
def add(argnum1, argnum2):
result = argnum1 + argnum2
print (result)
print("-"*25)
return result
while True:
print ("Options: ")
print ("Enter '+' to add two numbers")
print ("Enter '-' to subtract two numbers")
print ("Enter '*' to multiply two numbers")
print ("Enter '/' to divide two numbers")
print ("Enter 'quit' to end the program")
user_input = input(": ")
if user_input == "quit":
break
elif user_input == "+":
argnum1 = float (input("Enter your fist number: "))
argnum2 = float (input("Enter your second number: "))
add(argnum1, argnum2)