我开始编码2天了,只是为了练习,我决定制作一个计算器。它一直给我错误,说明num1没有定义。
#data collection
def a1(num1, op, num2) :
num1 = int[input("enter the first number: ")]
op = input("enter the operation: ")
num2 = int[input("enter the second number: ")]
#running the operations
def a2() :
if (op == "+"):
num3 = num1 + num2
print (num3)
elif (op == "-"):
num4 = num1 - num2
print (num4)
elif (op == "*"):
num5 = num1 * num2
print (num5)
elif (op == "/"):
num6 = num1 / num2
print (num6)
else:
a1(num1, op, num2)
a2()
a1(num1, op, num2)
a2()
答案 0 :(得分:1)
函数参数是位置变量。您需要调用该函数并将变量传递给它以使其起作用。
传递给函数的变量是本地的,只能在函数中使用。您想要更改全局变量或从该函数返回。
您的代码正在做的是将未分配的变量名称num1,op,num2传递给函数。
在此处阅读更多内容:http://www.tutorialspoint.com/python/python_functions.htm
答案 1 :(得分:0)
以下是修复现有代码的方法:
#data collection
def a1():
num1 = int(input("enter the first number: "))
op = input("enter the operation: ")
num2 = int(input("enter the second number: "))
return num1, op, num2
#running the operations
def a2(num1, op, num2):
if (op == "+"):
num3 = num1 + num2
print(num3)
elif (op == "-"):
num4 = num1 - num2
print(num4)
elif (op == "*"):
num5 = num1 * num2
print (num5)
elif (op == "/"):
num6 = num1 / num2
print(num6)
else:
num1, op, num2 = a1()
a2(num1, op, num2)
num1, op, num2 = a1()
a2(num1, op, num2)
我所做的改变:
a1
不接受任何参数,而是返回三个值。a1
的调用者将返回的值捕获到局部变量中。a2
接受三个参数。int[...]
更改为int(...)
。答案 2 :(得分:0)
最后两行:
a1(num1, op, num2)
a2()
是"主要"你的程序的主体。在此之前是两个函数定义。当您调用a1
时,num1
的值是多少?的确,它的类型是什么?答:它是一个与之无关的名称。这就是Python解释器抱怨的原因。