我花了最近几个小时在网上阅读并查看Python在线手册(目前正在使用Python v2.7),但我仍然在努力理解如何将变量从一个函数传递到另一个函数。
目前我刚刚开始简单的事情,让我的头脑传递变量。我有3个函数(一个将显示一个问候消息),另一个将要求用户输入,第三个将接受用户输入并执行计算。
对于我的生活,我无法想象如何将用户输入值输入计算功能。我想,一旦我在用户输入中输入了值,我就可以将它们发送到calc函数。但我不能.......我一直收到一条错误信息: calc =计算(num1,num2) NameError:未定义全局名称'num1'
有人可以指出我哪里出错吗?这让我疯了!
def main():
message()
input = user()
calc = cal(num1, num2)
def message():
print "Welcome message"
def user():
side_a = int(raw_input("Enter a: "))
side_b = int(raw_input("Enter b: "))
return side_a, side_b
def cal(num1, num2):
side_c = side_a + side_b
return side_c
答案 0 :(得分:1)
所以想想这样:
你有一个函数(def user()),它将返回两个值。您必须接收这两个值并将它们存储在某处。在你的main()中你使用变量"输入"现在必须按照书面形式保存两个值。如果你这样做:
print input
你得到(A面的价值,B面的价值)传递给你。如果你写了
print input[0]
它只打印A面。更容易(在我看来)有两个变量待命以接收返回值:
input1, input2 = user()
现在在你的def cal(num1,num2)中,它期望接收两个参数并返回一个值。所以你的主要应该是这样的:
def main()
message()
input = user()
calc = cal(input[0], input[1])
定义函数时,使用的变量(num1,num2)是表示该函数中输入的方式。如果你只传递参数num1,num2它们没有值,因为它们没有在main中声明。名称不必匹配,您只需传递正确的数字(和类型)参数。
例如:
def sample(int1, int2, string):
number3 = number1 + number2
print(string1 + str(number3))
您可以传递此原始数据,也可以传递变量。在此示例main中,打印输出将是相同的:
def main():
number1 = 2
number2 = 2
string1 = "two plus two equals: "
sample(2,2,"two plus two equals: ")
sample(number1,number2,string1)
答案 1 :(得分:1)
改变你拥有的东西
def main():
message()
num1, num2 = user() # grab the numbers from user fn and store them in num1, num2
calc = cal(num1, num2)
def message():
print "Welcome message"
def user():
side_a = int(raw_input("Enter a: "))
side_b = int(raw_input("Enter b: "))
return side_a, side_b
def cal(side_a, side_b):
side_c = side_a + side_b
return side_c