Python和变量传递

时间:2016-03-28 02:55:03

标签: python

我花了最近几个小时在网上阅读并查看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

2 个答案:

答案 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