如何修复 Python 中的 "undefined name" 错误消息?
How to fix "undefined name" error message in Python?
我正在用 Python 创建一个简单的计算器作为我的第一个 "bigger" 项目。
我正在尝试使用 def 函数,当我尝试调用该函数时,它给出了 "undefined name" 错误消息。
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(": ")
def calculation (argnum1, argnum2):
argnum1 = float (input("Enter your fist number: "))
argnum2 = float (input("Enter your second number: "))
number = argnum1
number = argnum2
result = argnum1 + argnum2
print (result)
print("-"*25)
return number
return result
if user_input == "quit":
break
elif user_input == "+":
calculation (argnum1, argnum2)
I expect the output of argnum1 + argnum 2 result.
您可以将函数定义移出 while 块。
def calculation():
argnum1 = float(input("Enter your fist number: "))
argnum2 = float(input("Enter your second number: "))
result = argnum1 + argnum2
print(result)
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 == "+":
calculation()
你不必要地定义了你的函数来接受两个参数,你不能提供它们在内部函数中定义:
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)
我正在用 Python 创建一个简单的计算器作为我的第一个 "bigger" 项目。 我正在尝试使用 def 函数,当我尝试调用该函数时,它给出了 "undefined name" 错误消息。
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(": ")
def calculation (argnum1, argnum2):
argnum1 = float (input("Enter your fist number: "))
argnum2 = float (input("Enter your second number: "))
number = argnum1
number = argnum2
result = argnum1 + argnum2
print (result)
print("-"*25)
return number
return result
if user_input == "quit":
break
elif user_input == "+":
calculation (argnum1, argnum2)
I expect the output of argnum1 + argnum 2 result.
您可以将函数定义移出 while 块。
def calculation():
argnum1 = float(input("Enter your fist number: "))
argnum2 = float(input("Enter your second number: "))
result = argnum1 + argnum2
print(result)
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 == "+":
calculation()
你不必要地定义了你的函数来接受两个参数,你不能提供它们在内部函数中定义:
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)