Python 3.x Python3密码给了我一个循环

Python 3.x Python3密码给了我一个循环,python-3.x,login,while-loop,infinite-loop,Python 3.x,Login,While Loop,Infinite Loop,在编写脚本时,我从python3解释器中获得了一些奇怪的观察结果 错误就在于此 我输入正确的用户名和密码,我被授予一个无条件的无限循环 def LoginAdmin(): # 3 chances seulement ... LoginTrial = 3 position=0 AdminOK=0 AdminCheck=[] PassCheck = open('Data_LoginAdmin', 'r') #lecture des lignes

在编写脚本时,我从python3解释器中获得了一些奇怪的观察结果 错误就在于此 我输入正确的用户名和密码,我被授予一个无条件的无限循环

def LoginAdmin():
    # 3 chances seulement ...
    LoginTrial = 3
    position=0
    AdminOK=0
    AdminCheck=[]
    PassCheck = open('Data_LoginAdmin', 'r')
    #lecture des lignes et mise en données les informations mdp et login
    for ligne in PassCheck:
        print(ligne, end='')
        words = ligne.split(":")
        AdminCheck.append(words)
    print(AdminCheck)

    PassCheck.close()
    LoginAdminAcces = True

    while (((LoginTrial != 0) or (AdminOK == True))):
        UserAdminName=input("Identification : ")
        if not UserAdminName.isalpha:
            LoginTrial = LoginTrial - 1
            print("Autentification Échouer essai restant : ", LoginTrial)
        elif UserAdminName != AdminCheck[0][0]:
            LoginTrial = LoginTrial - 1
            print("Autentification Échouer essai restant : ", LoginTrial)
        elif UserAdminName == AdminCheck[0][0]:
            while (((LoginTrial != 0) or (AdminOK == True))):
                UserAdminPass=input("Mot de pass : ") 
                if not UserAdminName.isalpha:
                    LoginTrial = LoginTrial - 1
                    print("Autentification Échouer essai restant : ", LoginTrial)
                elif UserAdminPass != AdminCheck[0][1]:
                    LoginTrial = LoginTrial - 1
                    print("Autentification Échouer essai restant : ", LoginTrial)
                elif UserAdminPass == AdminCheck[0][1]:
                    LoginAdminAcces = True
                    AdminOK=True
                    print(AdminOK)
                    print("Accès apprové ...")
    if LoginTrial == 0:
        print("Accès Refusé !!!")
        LoginAdminAcces = False
    return (LoginAdminAcces)
这是文件数据\u LoginAdmin

Admin:AdminPass

如果有人知道为什么会救我的命。。。有点…

不完全确定发生了什么,但这里有一个潜在的问题:

  • UserAdminName==AdminCheck[0][0]
    然后输入最后一个elif(可能是正确的密码)
  • AdminOK
    设置为
    True
    (可能意味着密码已经过验证)
  • while的条件为true,因为
    AdminOK
    为true
  • 我认为while循环应该希望
    AdminOK
    为false,这样当密码不正确时就可以再次循环。另外,
    应该是
    。因此,将while循环更改为

    while (((LoginTrial != 0) and (AdminOK == False))):
    

    Et“AutentificationÉchouée”car c’s UNE Autentification.

    而且因为AdminOK是一个布尔值,你可以说
    不是AdminOK
    。哈哈,我也需要更多的睡眠。这绝对是一个,而不是一个OR。您希望用户有剩余的尝试,但尚未获得密码。实际上,如果用户名错误,用户无法实际输入密码,这部分工作正常,而第二部分由于某些原因忽略了真假,导致我崩溃