簡體   English   中英

為什么這個登錄程序可以在我第一次正確輸入用戶名和密碼時登錄?

[英]Why is this login program can login when i correct putting the username and password just at the first time?

所以,我嘗試用python創建一個簡單的登錄程序。 並且遇到了else條件的事情,當用戶名和密碼不匹配時,我想讓它重新開始,即Username輸入和Password輸入。 然后我在else塊中寫了login() 我可以在第一次嘗試時輸入正確的用戶名和密碼時登錄。 但是當我錯了一次,然后輸入正確的用戶名和密碼,它就會回到login()函數。 我是python新手,所以我認為簡單登錄對於“if else condition”是一個很好的練習。 抱歉我的英文不好,謝謝。

admin = "admin"
key = "admin"

def login():
    access = False
    while access == False:
        username = input("Username : ")
        password = input("Password : ")
        if username == admin and password == key:
            access = True
            print("Welcome admin")
        else:
            login()

此代碼將按您的要求運行:

admin = "admin"
key = "admin"


def login():
    access = False
    if access is False:
        username = input("Username : ")
        password = input("Password : ")
        if username == admin and password == key:
            access = True
            print("welcome admin")
        else:
            login()


login()

這里的問題是while循環和遞歸的組合。 第一次輸入錯誤的輸入時,第二次調用login() 然后你輸入正確的輸入。 因此它設置了對True訪問權限並打印Welcome admin並返回。 但是當它返回時,訪問的值現在是False,因此它繼續循環。 您可以通過使用if語句替換while或通過刪除遞歸來解決此問題。

if替換while

admin = "admin"
key = "admin"

def login():
    access = False
    if not access:
        username = input("Username : ")
        password = input("Password : ")
        if username == admin and password == key:
            access = True
            print("Welcome admin")
        else:
            login()

刪除遞歸:

admin = "admin"
key = "admin"

def login():
    access = False
    while not access:
        username = input("Username : ")
        password = input("Password : ")
        if username == admin and password == key:
            access = True
            print("Welcome admin")

這種方法可能是首選,因為這里不需要遞歸。

暫無
暫無

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

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