Python readline()或条件中存在错误

Python readline()或条件中存在错误,python,Python,我的代码有问题。我创建了一个程序,它创建了一个帐户,将用户名和密码保存在一个.txt文件中。然后请求登录,并检查用户名和密码是否正确。但每次执行else条件时。我得到的结果是“你没有任何账户”。请帮忙。提前谢谢 # MyProgram: Account Verification print "\ncreate account:\n" f = open("data.txt",'w+') def create(): user_name = raw_input("Enter userna

我的代码有问题。我创建了一个程序,它创建了一个帐户,将用户名和密码保存在一个.txt文件中。然后请求登录,并检查用户名和密码是否正确。但每次执行else条件时。我得到的结果是“你没有任何账户”。请帮忙。提前谢谢

# MyProgram: Account Verification 

print "\ncreate account:\n"
f = open("data.txt",'w+')

def create():
    user_name = raw_input("Enter username >> ")
    password = raw_input("Enter password >> ")
    confirm = raw_input("Enter password to confirm >> ")
    if password == confirm:
        f.write(user_name+"\n"+password)
        f.close()
        print "Account created"
    else:
        print "\nPassword not matched\n\n Enter details again:\n"
        create()

create() 

new = open("data.txt")
un = new.readline()
pw = new.readline()

new.close()

def login():
    print "\nLogin:\n"
    name = raw_input("Enter username >> ")
    if name == un:
        pas = raw_input("Enter password >> ")
        if pas == pw:
            print "Welcome!"
        else:
            print "Wrong password"
            login()                
    else:
        print "You don't have any account" 

login()     

readline
在行尾包含换行符,因此您可能正在比较例如“hunter2\n”和“hunter2”。试着先去掉空白

# MyProgram: Account Verification 

print "\ncreate account:\n"
f = open("data.txt",'w+')

def create():
    user_name = raw_input("Enter username >> ")
    password = raw_input("Enter password >> ")
    confirm = raw_input("Enter password to confirm >> ")
    if password == confirm:
        f.write(user_name+"\n"+password)
        f.close()
        print "Account created"
    else:
        print "\nPassword not matched\n\n Enter details again:\n"
        create()

create() 

new = open("data.txt")
un = new.readline()
pw = new.readline()

new.close()

def login():
    print "\nLogin:\n"
    name = raw_input("Enter username >> ")
    if name == un:
        pas = raw_input("Enter password >> ")
        if pas == pw:
            print "Welcome!"
        else:
            print "Wrong password"
            login()                
    else:
        print "You don't have any account" 

login()     
un = new.readline().strip()
pw = new.readline().strip()

或者,最好以某种方式存储/检索用户名和密码,而不是向纯文本文件写入字符串或从纯文本文件读取字符串。对于非常轻量级的应用程序,像
pickle
json
库这样的简单序列化就足够了;但任何真正重要的事情都会从一个合适的数据库中受益。使用其中任何一个,您可能根本不需要担心
readline()
的行为。

readline
在行尾包含换行符,因此您可能正在比较例如“hunter2\n”和“hunter2”。试着先去掉空白

# MyProgram: Account Verification 

print "\ncreate account:\n"
f = open("data.txt",'w+')

def create():
    user_name = raw_input("Enter username >> ")
    password = raw_input("Enter password >> ")
    confirm = raw_input("Enter password to confirm >> ")
    if password == confirm:
        f.write(user_name+"\n"+password)
        f.close()
        print "Account created"
    else:
        print "\nPassword not matched\n\n Enter details again:\n"
        create()

create() 

new = open("data.txt")
un = new.readline()
pw = new.readline()

new.close()

def login():
    print "\nLogin:\n"
    name = raw_input("Enter username >> ")
    if name == un:
        pas = raw_input("Enter password >> ")
        if pas == pw:
            print "Welcome!"
        else:
            print "Wrong password"
            login()                
    else:
        print "You don't have any account" 

login()     
un = new.readline().strip()
pw = new.readline().strip()

或者,最好以某种方式存储/检索用户名和密码,而不是向纯文本文件写入字符串或从纯文本文件读取字符串。对于非常轻量级的应用程序,像
pickle
json
库这样的简单序列化就足够了;但任何真正重要的事情都会从一个合适的数据库中受益。有了这些,您可能根本不需要担心
readline()
的行为。

我想您必须
strip()
读取行()的输出才能删除换行符。您能提供一个示例“data.txt”和导致问题的输入吗?我想您必须
strip()
读取行()的输出删除换行符。能否提供一个“data.txt”示例和导致问题的输入?密码选择不错!bash.org/?quote=244321密码选择不错!bash.org/?quote=244321
# MyProgram: Account Verification 

print "\ncreate account:\n"
f = open("data.txt",'w+')

def create():
    user_name = raw_input("Enter username >> ")
    password = raw_input("Enter password >> ")
    confirm = raw_input("Enter password to confirm >> ")
    if password == confirm:
        f.write(user_name+"\n"+password)
        f.close()
        print "Account created"
    else:
        print "\nPassword not matched\n\n Enter details again:\n"
        create()

create() 

new = open("data.txt")
un = new.readline()
pw = new.readline()

new.close()

def login():
    print "\nLogin:\n"
    name = raw_input("Enter username >> ")
    if name == un:
        pas = raw_input("Enter password >> ")
        if pas == pw:
            print "Welcome!"
        else:
            print "Wrong password"
            login()                
    else:
        print "You don't have any account" 

login()