Python 变量不';不要把自己加在以前的数额上
在这段代码中,我试图让你在键入“work”时,得到1到50之间的任意数字,它将自身添加到总余额中(5倍)。但当我这样做时,变量的前一个量重置为新的量Python 变量不';不要把自己加在以前的数额上,python,python-3.x,Python,Python 3.x,在这段代码中,我试图让你在键入“work”时,得到1到50之间的任意数字,它将自身添加到总余额中(5倍)。但当我这样做时,变量的前一个量重置为新的量 import random balance = 0 def work(balance): earned_money = random.randint(1, 50) balance += earned_money print(balance) for x in range(5): user_input = input(
import random
balance = 0
def work(balance):
earned_money = random.randint(1, 50)
balance += earned_money
print(balance)
for x in range(5):
user_input = input()
if user_input == "work":
work(balance)
我建议你多了解一些 这是工作代码。您需要将其声明为
global
import random
balance = 0
def work():
global balance
earned_money = random.randint(1, 50)
balance += earned_money
print(balance)
for x in range(5):
user_input = input()
if user_input == "work":
work()
外部平衡变量位于全局范围中,而内部平衡变量位于局部范围中。 如果要使局部范围变量成为全局变量,则需要在函数中使用global关键字
import random
balance = 0
def work():
global balance # This makes balance variable global.
earned_money = random.randint(1, 50)
balance += earned_money
print(balance)
for x in range(5):
user_input = input()
if user_input == "work":
work()
尽管
global
关键字解决了您的问题,但根据您询问的对象,全局变量在Python中被认为是不好的做法。我尽量避免它们,除非绝对没有其他方法,在这种情况下,很容易找到不需要全局变量的解决方案:
随机导入
余额=0
def工作(平衡):
挣得的钱=random.randint(1,50)
返回余额+挣到的钱
对于范围(5)内的x:
用户输入=输入()
如果用户输入=“工作”:
平衡=工作(平衡)
打印(余额)
函数中的balance
变量与全局变量不同。您将添加到局部变量,这不会影响全局变量。这是否回答了您的问题?谢谢你的回答。global关键字解决了问题,尽管我尝试了不起作用的代码,但我只需删除work
括号中的balance
。使用全局变量虽然可以快速解决问题,但通常是一个坏主意,最终导致代码糟糕、难以测试和容易出错。传递变量并影响其函数输出要好得多,如@fsimonjetz的答案所示。这是正确的方法,而不是使用全局变量。