是的,我已经阅读了很多这方面的例子,但我仍然没有得到它。
我正在学习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()函数中定义了random。
有没有办法将随机值传递给函数calc_pay_rise()?
答案 0 :(得分:2)
试试这个:
payrise = payrise + random_number()
当你调用一个返回值的函数(在这种情况下是一个随机数)时,你应该对返回的值做一些事情。
另请注意,random
中本地定义的变量random_number()
无法从其他函数中“看到” - 除非您在本地声明一个新变量,但它可以包含您想要的任何名称。另一种说法是:
random = random_number() # can be any name, I'm using `random` again
payrise = payrise + random
答案 1 :(得分: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()
我还通过消除所有无效的东西来减少代码。
P.S。如果代码真的减少到绝对最小值,你就什么都没有了,因为在当前形式下,代码绝对没有任何东西:
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.
答案 2 :(得分:2)
你需要设置一个名为“random”的变量
所以你的calc_pay_rise函数应如下所示:
def calc_pay_rise():
payrise = 5
random = random_number()
payrise = payrise + random
print payrise
答案 3 :(得分:1)
def calc_pay_rise()中的变量“random”从未分配过。尝试:
def calc_pay_rise():
payrise = 5
random = random_number()
payrise = payrise + random
print payrise
答案 4 :(得分:1)
我不是python程序员,但这看起来像是一个范围问题。 您确实定义了变量“random”,但它的范围 - 代码中可见且可用的部分 - 仅限于您定义它的函数。在这种情况下, inside random_number()函数。
在calc_pay_rise()函数中不可见 可见的是其他函数,random_number()本身。 这是您需要在添加中使用的内容。
这是返回值的基本点。