2013-12-08 41 views
0

同时使脚本我有一些奇怪的beheiviour形成python3解释 的错误仅仅是这个 我输入正确的用户名和密码我与一个没有条件的无限循环授予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) 

这是文件Data_LoginAdmin

Admin:AdminPass 

,如果有人看到它为什么会救我的命......那种......

回答

0

不能完全确定是怎么回事,但这里是一个潜在的问题:

  1. UserAdminName == AdminCheck[0][0]你进入最后的elif(大概是正确的密码)
  2. AdminOK设置为True(大概意思是密码有被验证)
  3. 的同时的条件为真,因为AdminOK是真的

我认为while循环应该想AdminOK是假的,这样,当密码不正常时,您可以再次循环。另外,or应该是and。因此,while循环改为

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

Et “是AutentificationÉchouée” 汽车花莲UNE autentification。

+0

此外,由于AdminOK是一个布尔值,所以您可以只说'不是AdminOK'。 – Alec

+0

工作,我认为我需要咖啡因或一些睡眠... – GothSparkImvu

+0

编辑nop仍然得到循环...它实际上忽略真假部分... – GothSparkImvu