[英]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.