2017-10-08 2 views
-1

Hey j'ai écrit ce code mais je ne vois pas ce qui ne va pas, c'est dire que le nom d'utilisateur est faux mais si je l'imprime, il retourne exactement ce que je saisis.Pourquoi dit-on que l'accès est refusé lorsque je saisis le nom d'utilisateur correctement?

ea = input("Do you already have an account") 
if ea == "Yes" or ea == "yes": 
    Ausername = input("Input your username") 
    Apassword = input("Input your password") 

    f=open("login.txt","r") 
    lines=f.readlines() 
    username=lines[0] 

    if (Ausername) == (username): 
     print("Welcome to the quiz") 
    else: 
     print("Access denied") 

    f.close() 

else: 
    name = input("Input your name") 

    yeargroup = input("Input your year group") 

    age = str(input("Input your age")) 

    firstusername = ((name[0]+name[1]+name[2])+(age)) 
    print((firstusername)+(" is your username")) 
    firstpassword = input("Enter what you want your password to be") 
    print(firstusername) 
    print(firstpassword) 


    login = open("login.txt","a") 
    login.write(firstusername + "\n" + name + "\n" + yeargroup + "\n" + age + "\n" + firstpassword + "\n") 
    login.close() 

print("---------------------------------------------------") 
+1

Que voulez-vous dire par nom d'utilisateur est erroné ? Quelle est la sortie attendue et aussi s'il vous plaît poster la traceback d'erreur. – rkatkam

Répondre

2

Les données de fichier sont lues par défaut avec la nouvelle ligne de fin. Avez-vous essayé d'appeler str.strip avant de comparer vos chaînes?

if Ausername == username.strip(): 
    ... 

Aussi, si vous voulez faire cas des comparaisons insensibles, vous devez convertir votre chaîne en minuscules en utilisant str.lower pour réduire la taille de votre espace de recherche:

if ea.lower() == "yes": 
    ... 
+0

Le fichier est ouvert en mode ajout lors de l'écriture, mais le nom d'utilisateur est lu depuis readlines() [0] '. Je suspecte que c'est un problème mais pas encore passé par le code. – roganjosh

+0

Merci cela a fonctionné, qu'est-ce que le bit de bande réellement signifier et faire? – Clout

+0

@Clout comme le nom le suggère, il supprime les nouvelles lignes et les espaces à la fin des chaînes. –