Python没有';t保存简单变量的值
我正在尝试用Python运行这段代码。(我省略了“listAccounts”函数的主体,因为我对此没有问题) 问题是当我使用“createAccount”函数创建一个新帐户时。当我输入值并保存时,一切正常。我显示帐户,第一个帐户号是0。一切都进行得很顺利,但当我再次创建一个新帐户并列出它们时,我意识到两个帐户的数字都是0,即使我创建了第三个帐户,它的值也是0。例如,如果“numAccounts”变量没有增加Python没有';t保存简单变量的值,python,python-3.x,variables,Python,Python 3.x,Variables,我正在尝试用Python运行这段代码。(我省略了“listAccounts”函数的主体,因为我对此没有问题) 问题是当我使用“createAccount”函数创建一个新帐户时。当我输入值并保存时,一切正常。我显示帐户,第一个帐户号是0。一切都进行得很顺利,但当我再次创建一个新帐户并列出它们时,我意识到两个帐户的数字都是0,即使我创建了第三个帐户,它的值也是0。例如,如果“numAccounts”变量没有增加 我调试了我的程序,我注意到'numAccounts'的值实际上增加到了1,但当移到're
我调试了我的程序,我注意到'numAccounts'的值实际上增加到了1,但当移到'return'行时,它会再次将值放入0。我对“return”行进行注释、更改值等,但没有任何效果。有人知道我的代码有什么问题吗?因为您没有存储
createAccount
返回的内容
虽然您已经在全局级别创建了所有变量,但您正在接收同名变量,因此函数将创建该变量的本地副本,并且不会更改全局变量的值
您的while循环应该如下所示
while ('3' != option):
option = input('''Please select an option:
1.- List Accounts
2.- Create Account
3.- Exit
''')
if option == '1':
listAccounts(customers)
elif opcion == '2':
customers,numAccounts = createAccount(customers, numAccounts)
os.system("CLS")
print("End of the program")
问题在于numAccounts变量的范围,您将函数定义为createAccount(customers,numAccounts),这意味着您增加1的numAccounts变量仅在函数中有效。当您将numAccounts变量定义为全局变量时,您可以定义createAccount(customers,currentnumAccounts)之类的函数,当您调用numAccounts+=numAccounts时,您将增加全局变量。谢谢您的回答,Genaro。我阅读了更多关于函数中变量行为的内容,并在“createAccount”函数中添加了“global”关键字,从而解决了这个问题,这样,当值增加时,我就可以保存它。谢谢大家抽出时间。
while ('3' != option):
option = input('''Please select an option:
1.- List Accounts
2.- Create Account
3.- Exit
''')
if option == '1':
listAccounts(customers)
elif opcion == '2':
customers,numAccounts = createAccount(customers, numAccounts)
os.system("CLS")
print("End of the program")