我正在为我在学校正在从事的一个小项目进行用户登录,练习了文件处理等等。在大多数情况下,它运行良好,但是在尝试创建新用户时遇到了麻烦。新用户需要具有原始的用户名和密码才能创建,否则,应告诉他们选择不可用。出于某种原因,它可以与文件中的第一个用户名和密码配合使用,并使用户重试。但是,当我尝试用一个我不知道该名字的名称创建一个新用户时,它就会让我满意。
def signUp():
username = str(input("\nPlease enter your new username "))
file = open ("usernames.txt","r")
for x in file:
if username in x:
print ("\nThat username is already in use, please try another")
signUp()
else:
print ("Your username is now ",username)
file.close()
password = input("\nPlease create a password ")
file = open ("passwords.txt","r")
for x in file:
if password in x:
print ("\nThat password is already in use, please try another")
signUp()
else:
print ("Your password is now ", password," Don't forget it")
file.close()
file = open ("usernames.txt","a")
file.write (username)
file.write ("\n")
file.close()
file = open ("passwords.txt","a")
file.write (password)
file.write ("\n")
file.close()
print ("\nYour login details have been saved")
print ("Please login")
logIn()
在用户名文件中,其名称为:
亚历克斯
乔什
密码文件具有:
123qwe
ewq321
该代码适用于Alex和123qwe并阻止它们重复执行,但不适用于Josh或ewq321。 目前,我不寻求任何其他改进。稍后我将对其进行完善。现在,我只需要帮助解决这个小问题。我知道我的解释有些混乱,因此可能有助于复制我已经完成的工作并进行尝试。显然,这并不是全部代码,因此可能并不完美。
答案 0 :(得分:2)
问题出在两个循环中,恰好在else
子句中。
您的代码将检查是否唯一的第一个用户名已经存在,这是因为您在循环中引入了else,并且如果使用return
已经存在该用户名,则还需要退出程序。
这是新代码:
def signUp():
username = str(input("\nPlease enter your new username "))
file = open ("usernames.txt","r")
for x in file:
if username in x:
print ("\nThat username is already in use, please try another")
signUp()
return
print ("Your username is now ",username)
file.close()
password = input("\nPlease create a password ")
file = open ("passwords.txt","r")
for x in file:
if password in x:
print ("\nThat password is already in use, please try another")
signUp()
return
print ("Your password is now ", password," Don't forget it")
file.close()
file = open ("usernames.txt","a")
file.write (username)
file.write ("\n")
file.close()
file = open ("passwords.txt","a")
file.write (password)
file.write ("\n")
file.close()
print ("\nYour login details have been saved")