0

是的,我已经阅读了大量关于此的示例,但我仍然不明白。

我正在学习 Python,我制作了这个脚本来帮助我理解如何“返回”:

def random_number():
    random = 0
    random = (random + 5) * 10
    return random

def calc_pay_rise():
    payrise = 5
    random_number()
    payrise = payrise + random
    print payrise

calc_pay_rise()

我希望输出为 55。相反,我得到了错误:'未定义全局名称'随机''。我想我定义了 random_number() 函数中的随机数。

有没有办法将随机值传递给函数 calc_pay_rise()?

4

5 回答 5

2

尝试这个:

payrise = payrise + random_number()

当你调用一个返回值的函数(在这种情况下是一个随机数)时,你应该对返回的值做一些事情。

另请注意,random在内部本地定义的变量random_number()不能从其他函数“看到” - 除非您在本地声明一个新变量,但它可以具有您想要的任何名称。另一种说法是:

random = random_number()   # can be any name, I'm using `random` again
payrise = payrise + random
于 2013-09-29T17:18:51.207 回答
2

calc_pay_rise中,您正在丢弃random_number()调用返回的值;相反,做randmom = random_number(). 你误解的是变量是如何工作的——一个函数中的局部变量(例如def random_number)在其他函数中是不可见的(例如def calc_pay_rise)。

def random_number():
    random = 0  # not sure what's the point of this
    return (random + 5) * 10

def calc_pay_rise():
    return 5 + random_number()

calc_pay_rise()

我还通过消除所有无用的东西来减少代码。

PS如果代码真的被减少到绝对最小值,你什么都没有,因为在目前的形式下,代码绝对什么都不做:

def random_number():
    random = 0  # not sure what's the point of this
    return (random + 5) * 10
# is the same as 
def random_number():
    return 50

def calc_pay_rise():
    return 5 + random_number()
# is the same as
def calc_pay_rise():
    return 5 + 50  # because random_number always returns 50

calc_pay_rise()
# is really just the same as writing
5 + 50
# so you're not doing anything at all with that value, so you might as well eliminate the call, because it has no side effects either.
于 2013-09-29T17:19:39.243 回答
2

您需要设置一个名为“随机”的变量

所以你的 calc_pay_rise 函数应该是这样的:

def calc_pay_rise():
    payrise = 5
    random = random_number()
    payrise = payrise + random
    print payrise
于 2013-09-29T17:20:25.943 回答
1

您在 def calc_pay_rise() 中的变量“随机”从未分配过。尝试:

def calc_pay_rise():
    payrise = 5
    random = random_number()
    payrise = payrise + random
    print payrise
于 2013-09-29T17:19:56.690 回答
1

我不是 python 程序员,但这看起来像是范围问题。您确实定义了变量“随机”,但它的作用域——它可见和可用的代码部分——仅限于定义它的函数。在这种情况下,random_number() 函数内部。

它在 calc_pay_rise() 函数中不可见。
可见的是另一个函数random_number() 本身。这就是您需要在添加中使用的内容。

这是返回值的基本点。

于 2013-09-29T17:22:32.267 回答