簡體   English   中英

UnboundLocalError:賦值之前(在函數的返回部分中)引用的本地變量“用戶名”

[英]UnboundLocalError: local variable 'username' referenced before assignment (in a return part of a function)

def login():
    userinfo = open("userinfo.txt","r")
    userinforec = userinfo.readline()
    username1 = input("What is your username?\n")
    while userinforec != "":
        field = userinforec.split(",")
        username = field[0]
        password = field[1]
        name = field[2]
        age = field[3]
        year = field[4]
        mathseasy = field[5]
        mathsmed = field[6]
        mathshard = field[7]
        hiseasy = field[8]
        hismed = field[9]
        hishard = field[10]
        if username != username1:
            print("Error, username not found")
            break
        else:
            password1 = str(input("What is your password?\n"))
            if password == password1:
                print("password accepted")
                writereport(username)
            else:
                print("Error, password not accepted")
                login()
            userinforec = userinfo.readline()
    userinfo.close()
    return username

恰如標題中所述,當我運行這段代碼時,它說在分配之前引用了最后一行(返回用戶名)。

UnboundLocalError:分配前已引用本地變量“用戶名”

我查看了其他線程,如果變量在函數之外,則全部發生,但在這里不是。 我仍然需要使用global還是有其他解決方法?

如果您的while循環從未輸入,例如因為userinforec == ""那么您在返回username之前將其分配任何值。

如果在while循環中從未分配過username = "" ,則在其while循環前添加username = "" ,以便它具有一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM