首页 > 解决方案 > UnboundLocalError:分配之前引用的局部变量“余额”(Python)

问题描述

我是编码新手,我正在尝试编写一个程序来通过终端创建一个小型在线商店。这是代码:


    global balance
    
    
    def homescreen():
        print("What would you like to do?")
        print('1. Sign up')
        print("2. Login")
        option = int(input())
        if option == 1:
            sign_up()
        elif option == 2:
            login()
        else:
            print("Invalid option")
            homescreen()
    
    
    def sign_up():
        global username
        global password
        username = input("Enter a username: ")
        password = input("Enter a password: ")
        homescreen()
    
    
    def login():
        user = input("Enter your username: ")
        passw = input('Enter your password: ')
        if user == username and passw == password:
            print("Welcome")
            homepage()
        else:
            print('Incorrect password or username; please try again')
            login()
    
    
    def homepage():
        print("Welcome, what would you like to do?")
        print('1. Shop')
        print("2. Check Balance")
        print("3. Add money")
        option = int(input())
        if option == 1:
            shop()
        elif option == 2:
            check_balance_page()
        else:
            print("Invalid option")
            homepage()
    
    
    def check_balance_page():
        balance = 0
        print("Your balance is: ", balance)
        print('What would you like to do?')
        print('1. Go to homepage')
        print('2. Add money to balance')
        opt = int(input())
        if opt == 1:
            homepage()
        elif opt == 2:
            add_money()
        else:
            print("Invalid option")
            check_balance_page()
    
    
    def add_money():
        print("How much money would you like to add?")
        amount = int(input())
        balance += amount
        homepage()
    
    
    def shop():
        print('x')
    
    
    homescreen()


每当我运行它时,我都会创建注册、登录并进入检查余额屏幕,然后是添加资金屏幕。但是当我输入要添加到余额中的金额时,我收到此错误消息(XXXXXX 代表我的用户路径):


    Traceback (most recent call last):
      File "C:\Users\XXXXXX\Documents\pycharm projects\main.py", line 78, in <module>
        
      File "C:\Users\XXXXXXXX\Documents\pycharm projects\main.py", line 8, in homescreen
        option = int(input())
      File "C:\Users\XXXXXXXX\Documents\pycharm projects\main.py", line 21, in sign_up
        username = input("Enter a username: ")
      File "C:\Users\XXXXXXXXXXXX\Documents\pycharm projects\main.py", line 10, in homescreen
        sign_up()
      File "C:\Users\XXXXXXXXXXXXX\Documents\pycharm projects\main.py", line 29, in login
        if user == username and passw == password:
      File "C:\Users\XXXXXXXXXXXX\Documents\pycharm projects\main.py", line 45, in homepage
        elif option == 2:
      File "C:\Users\XXXXXXXXXXXX\Documents\pycharm projects\main.py", line 62, in check_balance_page
        add_money()
      File "C:\Users\XXXXXXXXXXXXX\Documents\pycharm projects\main.py", line 71, in add_money
        balance += amount
    UnboundLocalError: local variable 'balance' referenced before assignment


有好心人告诉我这是怎么回事吗?

标签: python

解决方案


推荐阅读