Python没有';t保存简单变量的值

Python没有';t保存简单变量的值,python,python-3.x,variables,Python,Python 3.x,Variables,我正在尝试用Python运行这段代码。(我省略了“listAccounts”函数的主体,因为我对此没有问题) 问题是当我使用“createAccount”函数创建一个新帐户时。当我输入值并保存时,一切正常。我显示帐户,第一个帐户号是0。一切都进行得很顺利,但当我再次创建一个新帐户并列出它们时,我意识到两个帐户的数字都是0,即使我创建了第三个帐户,它的值也是0。例如,如果“numAccounts”变量没有增加 我调试了我的程序,我注意到'numAccounts'的值实际上增加到了1,但当移到're

我正在尝试用Python运行这段代码。(我省略了“listAccounts”函数的主体,因为我对此没有问题)

问题是当我使用“createAccount”函数创建一个新帐户时。当我输入值并保存时,一切正常。我显示帐户,第一个帐户号是0。一切都进行得很顺利,但当我再次创建一个新帐户并列出它们时,我意识到两个帐户的数字都是0,即使我创建了第三个帐户,它的值也是0。例如,如果“numAccounts”变量没有增加


我调试了我的程序,我注意到'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")