2017-10-08 42 views
-1

嘿我已经写了这段代码,但我看不出它有什么问题,它是说用户名是错误的,但如果我打印它,它会返回我输入的内容。为什么当我正确输入用户名时,访问被拒绝?

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

你是什么意思的用户名是错误的?什么是预期的输出,也请发布错误回溯。 – rkatkam

回答

2

文件数据在默认情况下被读入尾随换行符。比较字符串之前是否尝试过拨打str.strip

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

另外,如果你想要做的不区分大小写的比较,你应该转换字符串中使用str.lower,以减少你的搜索空间的大小为小写:

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

写入时文件以追加模式打开,但用户名是从'readlines()[0]'读取的。我怀疑这是一个问题,但尚未完成代码。 – roganjosh

+0

感谢这工作,带位实际上是什么意思和做什么? – Clout

+0

@Clout作为名称提示,它从字符串中删除尾随的新行和空白。 –

相关问题