def main():
cash = float(input("How much money: "))
coins = 0
def changeCounter(n):
while True:
if cash - n > 0:
cash -= n
coins += 1
else:
break
return
main()
changeCounter(0.25)当我运行这段代码时,我会得到错误。
UnboundLocalError:外派前引用的局部变量“现金”
我怎么才能解决这个问题?
发布于 2018-07-11 07:34:56
问题是变量cash和coins只存在于函数main的“作用域”中,即在changeCounter中不可见。尝试:
def main():
cash = float(input("How much money: "))
coins = 0
return cash, coins
def changeCounter(n, cash, coins):
while True:
if cash - n > 0:
cash -= n
coins += 1
else:
break
# return
return coins # presumably
cash, coins = main()
changeCounter(0.25, cash, coins)发布于 2018-07-11 07:33:38
您需要将cash和coins定义为全局变量
cash = 0
coins = 0
def main():
global cash, coins
cash = float(input("How much money: "))
coins = 0
def changeCounter(n):
global cash, coins
while True:
if cash - n > 0:
cash -= n
coins += 1
else:
break
return
main()
changeCounter(0.25)但是,与将状态存储在全局变量中相比,更好的方法是使用重放变量和函数参数或其他方法。请参阅为什么全局变量是邪恶的?
https://stackoverflow.com/questions/51279618
复制相似问题