微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用另一个函数变量中的其他函数时,python 中的命名错误,已在被调用但表示未定义的函数中定义

如何解决调用另一个函数变量中的其他函数时,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的范围内定义了变量yinput,因此在funcA的范围内是不可用的、funcBfuncC

您可以从函数 number 返回值,并在不同的函数中定义它们

注意我修改了 x 函数中的 ynumber,并将其重命名为 input1input2,以表明这些变量,一旦执行 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 函数中设置了 ynumber() 变量,然后期望它们仍然“在范围内”(即可供参考)在其他函数中。

有多种方法可以解决此问题;也许最简洁的方法是将 xy 定义为 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 函数返回 ynumber(),并记住函数中的变量是局部变量,您可以在函数中使用它们。

还有另一种方法可以消除代码中的冗余:

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 举报,一经查实,本站将立刻删除。