我有以下代码:
def thingy(res)
if res=="food":
res=0
if res=="wood":
res=1
if res=="metal":
res=2
if res=="gold":
res=3
if res=="oil":
res=3
res="food"
thingy(res)
print(res)
当我运行它时,当我希望它说“0”时,它会出现“食物”。我怎么能让这个工作? 非常感谢你能帮助我。
答案 0 :(得分:8)
您需要返回该值,为什么不使用dictionary
而不是所有if
语句,它们最适合此类问题:
示例:强>
def thingy(res):
myOptions = {'food':0, 'wood':1, 'metal': 2, 'gold': 3, 'oil': 3}
return myOptions[res]
res = "food"
res = thingy(res)
print(res)
答案 1 :(得分:5)
在函数内部分配res
只会更改参数res
;这不会影响函数外的res
。
使函数返回结果。将函数的值赋给变量。
def thingy(res):
if res=="food":
res=0
if res=="wood":
res=1
if res=="metal":
res=2
if res=="gold":
res=3
if res=="oil":
res=3
return res # <---
res="food"
res = thingy(res) # <---
print(res)
答案 2 :(得分:2)
通常,您想要的是将返回值分配给变量:
res = thingy(res) # instead of thingy(res)
但是如果你想要另一种选择,也许你正在寻找一个全局变量?
def thingy():
global res
if res=="food":
res=0
if res=="wood":
res=1
if res=="metal":
res=2
if res=="gold":
res=3
if res=="oil":
res=3
res = "food"
thingy()
print(res) # prints "0"
在您的示例中,函数内的res
与您在函数外部定义的res
不同(您可以为其中一个提供不同的名称,这无关紧要)。在这个例子中,因为行global res
。
但在大多数情况下,使用返回值更简单,更清晰。