“total”会在我第一次运行函数时更改,但不会返回total的新值,所以当我再次运行它时,它的值与我第一次运行它之前的值相同?你知道吗
total = card[1].value
def hit(total):
#print (str(hit.counter))
print("You draw the " + string(card[hit.counter]))
total = total + card[hit.counter].value
print(str(total))
hit.counter += 1
return hit.counter
return total
函数在此处调用:
choice = raw_input("\n1. Hit\n2. Stay\n")
if (choice == "1"):
hit(total)
这是同样的问题
x = 1
def call(x):
x = x + 1
print x
return x
call(x)
每次运行时,它都会输出2,并且不会更新“x=x+1”的新值
然后呢?你期望什么?全局
x
将在最后一行之后自动更新吗?抱歉,事情不是这样的。在call()
中,x
是一个局部名称,与外部全局x
完全无关。当您调用call(x)
时。如果要更新全局x
,必须明确地重新绑定它:我强烈建议你读一下:https://nedbatchelder.com/text/names.html
编辑:
你的责任(我是说调用这个函数的代码的责任)是把总数存储在某个地方,然后在下一次调用时传回:
您有一个名为
total
的全局变量。还有一个名为total
的局部变量。你知道吗在函数中,局部
total
将阴影外部全局变量,因此更新到函数中的total
只会更新局部变量。你知道吗正如巴辛加所说,你没有达到总回报。如果希望返回多个值,可以如上所述执行,并在赋值中如上所示使用它们。你知道吗
相关问题 更多 >
编程相关推荐