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