问题描述
我正在为我在学校正在从事的一个小项目登录,正在练习文件处理等等。 在大多数情况下,它运行良好,但是在尝试创建新用户时遇到了麻烦。 新用户需要具有原始的用户名和密码才能创建,否则,应告诉他们选择不可用。 出于某种原因,它可以与文件中的第一个用户名和密码配合使用,并使用户重试。 但是,当我尝试使用自己不知道的名字创建新用户时,它会让我受益。
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。 目前,我不寻求任何其他改进。 稍后我将对其进行完善。 现在,我只需要帮助解决这个小问题。 我知道我的解释有些混乱,因此可能有助于复制我已经完成的工作并进行尝试。 显然,这不是全部代码,因此可能并不完美。
1楼
问题出在两个循环中,恰好在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")