如何解决调用另一个函数变量中的其他函数时,python 中的命名错误,已在被调用但表示未定义的函数中定义
我刚开始使用 python 我编写了以下代码,但出现名称错误 有人可以帮忙告诉我问题是什么吗?
print("A is addition \nB is subtraction \nC is multiplication \nD is division")
def number():
x=int(input("Enter a number: "))
y=int(input("Enter a number again: "))
def funcA():
number()
z=int(x)+int(y)
print(str(z))
def funcB():
number()
z=x-y
print(z)
def funcC():
number()
z=x*y
print(z)
choice=input("Enter desired option: " )
if choice == 'A':
funcA()
elif choice=='B':
funcB()
elif choice=='C':
funcC()
else:
print ("INVALID")
解决方法
问题是你在函数x
的范围内定义了变量y
和input
,因此在funcA
的范围内是不可用的、funcB
和 funcC
您可以从函数 number
返回值,并在不同的函数中定义它们
注意我修改了 x
函数中的 y
和 number
,并将其重命名为 input1
和 input2
,以表明这些变量,一旦执行 number
函数,它们就会超出范围。
尝试:
print("A is addition \nB is subtraction \nC is multiplication \nD is division")
def number():
input1 = int(input("Enter a number: "))
input2 = int(input("Enter a number again: "))
return input1,input2
def funcA():
x,y = number()
z = int(x) + int(y)
print(str(z))
def funcB():
x,y = number()
z = x-y
print(z)
def funcC():
x,y = number()
z = x*y
print(z)
choice=input("Enter desired option: " )
if choice == 'A':
funcA()
elif choice=='B':
funcB()
elif choice=='C':
funcC()
else:
print("INVALID")
,
发生这种情况是因为您在 x
函数中设置了 y
和 number()
变量,然后期望它们仍然“在范围内”(即可供参考)在其他函数中。
有多种方法可以解决此问题;也许最简洁的方法是将 x
和 y
定义为 global variables,尽管这样做的危险在于您很容易忘记变量所处的状态。我会去与@rorra 的建议:)
函数调用不正确 函数 a,b 并且不知道 x 和 y 。你必须这样称呼他们。
print("A is addition \nB is subtraction \nC is multiplication \nD is division")
def number():
x=int(input("Enter a number: "))
y=int(input("Enter a number again: "))
return x,y
def funcA():
x,y = number()
z=x+y
print(str(z))
def funcB():
x,y = number()
z=x-y
print(z)
def funcC():
x,y = number()
z=x*y
print(z)
choice=input("Enter desired option: " )
if choice == 'A':
funcA()
elif choice=='B':
funcB()
elif choice=='C':
funcC()
else:
print ("INVALID")
,
当您使用一个函数(在您的案例编号中)并且在其中使用变量时,该变量“存在于”您的函数中,因此如果您希望其他函数(例如 funcA )使用他们必须返回变量(在函数编号中)并将这些返回值保存在 funcA 中。 有很多方法可以在函数之间传递值,例如一种简单的方法(应用于您的代码)是:
def number():
x=int(input("Enter a number: "))
y=int(input("Enter a number again: "))
return x,y
def funcA():
x,y =number()
z=int(x)+int(y)
print(str(z))
,
正如其他人所说,您的问题是return
。您应该从 x
函数返回 y
和 number()
,并记住函数中的变量是局部变量,您可以在函数中使用它们。
还有另一种方法可以消除代码中的冗余:
print("A is addition \nB is subtraction \nC is multiplication \nD is division")
def funcA(x,y):
z= x + y
return z
def funcB(x,y):
z = x - y
return z
def funcC(x,y):
z = x * y
return z
choice=input("Enter desired option: " )
x,y = int(input("Enter a number: ")),int(input("Enter a number again: "))
output = "INVALID"
if choice == 'A':
output = funcA(x,y)
elif choice=='B':
output = funcB(x,y)
elif choice=='C':
output = funcC(x,y)
print(output)
当然,对函数使用 return
比仅仅打印要好得多。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。