如何创建一个检查Python可用性的登录程序?

时间:2018-09-23 16:35:15

标签: python login

我正在为我在学校正在从事的一个小项目进行用户登录,练习了文件处理等等。在大多数情况下,它运行良好,但是在尝试创建新用户时遇到了麻烦。新用户需要具有原始的用户名和密码才能创建,否则,应告诉他们选择不可用。出于某种原因,它可以与文件中的第一个用户名和密码配合使用,并使用户重试。但是,当我尝试用一​​个我不知道该名字的名称创建一个新用户时,它就会让我满意。

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 个答案:

答案 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")