两个用户的功能

时间:2018-10-24 08:33:27

标签: python function

我有两个用户的登录系统。我有重复的代码,但我将其设为使代码更有效的功能。但是,我不太确定如何为每个用户更改一些变量。这是代码:

def login_system():
    loggedin = False
    while not loggedin:
        login=input("Do you have an account? (yes/no) ")
        loggedin=False
        if login.lower()=="yes":
            login=open("login.csv")
            reader = csv.reader(login)
            username=input("What is your username: ")
            password=input("What is your password: ")
            for row in reader:
                if row[0]==username and row[1]==password:
                    print("Welcome " + username)
                    loggedin=True
                    break
            if loggedin==False:
                print("Invalid username or password. Please try again.")
                continue

        elif login.lower()=="no":
            print(" ")
            print("Make an account.")
            print(" ")
            username=input("What is your username: ")
            password=input("What is your password: ")
            break

        else:
            print("Invalid input.")
            continue
print("User 1:")
login_system()

print("")
print("User 2:")
login_system()

基本上,我希望用户1和用户2的用户名和密码不同,但是我不知道从哪里开始,似乎也无济于事。当我输入用户2的用户名和密码时,它将覆盖我对用户1的输入,并且我不希望这种情况发生。谢谢,

迪伦

2 个答案:

答案 0 :(得分:0)

看来您正在练习python或一个简单的问题,好吧,我添加了可以自行开发的Pseudo代码,因为它很简单,如果您自己编写,将帮助您考虑该范式以解决此问题。

每当您想要做某事或实现某件事时,分步执行或写下来,都会有很大帮助。

顺便阅读this

 def login_system():
        loggedin = False
        while not loggedin:
            login=input("Do you have an account? (yes/no) ")
            loggedin=False
            if login.lower()=="yes":
                login=open("login.csv")
                reader = csv.reader(login)
                username=input("What is your username: ")
                password=input("What is your password: ")
                for row in reader:
                    if row[0]==username and row[1]==password:
                        print("Welcome " + username)
                        loggedin=True
                        break
                if loggedin==False:
                    print("Invalid username or password. Please try again.")
                    continue

            elif login.lower()=="no":
                print(" ")
                print("Make an account.")
                print(" ")
                username=input("What is your username: ")
                password=input("What is your password: ")
                #How to Save Username and password
                #1. Find Two Empty Rows or one empty row and it's corresponding column in CSV file. (Can be done using running a loop on the csv file)
                #2. Store Username password in the corresponding rows and columns above. 


                break

            else:
                print("Invalid input.")
                continue
    print("User 1:")
    login_system()

    print("")
    print("User 2:")
    login_system()

答案 1 :(得分:-1)

根据您的要求,如果您存储用户名和密码,那么登录成功的字典似乎更适合您

按如下所示编写代码。

users_logged_in={}
def login_system():
loggedin = False
while not loggedin:
    login=input("Do you have an account? (yes/no) ")
    loggedin=False
    if login.lower()=="yes":
        login=open("login.csv")
        reader = csv.reader(login)
        username=input("What is your username: ")
        password=input("What is your password: ")
        for row in reader:
            if row[0]==username and row[1]==password:
                print("Welcome " + username)
                #  usernames and passwords you have entered stored in dict
                users_logged_in[username]=password
                loggedin=True
                break
        if loggedin==False:
            print("Invalid username or password. Please try again.")
            continue

    elif login.lower()=="no":
        print(" ")
        print("Make an account.")
        print(" ")
        username=input("What is your username: ")
        password=input("What is your password: ")
        break

    else:
        print("Invalid input.")
        continue
print("User 1:")
login_system()

print("")
print("User 2:")
login_system()

如果要保留登录到系统的用户名的顺序,请转到Python集合中的 OrderedDict

否则,您可以使用用户名和密码的元组创建列表 在上面的代码中如下创建元组

logged_user_details=(username,passowrd)

然后让

  

users_logged_in

是用户名和密码的列表,将上面创建的元组附加到该列表中。

users_logged_in.append(logged_user_details). 

现在,您的列表中将包含用户和密码,如下所示,并且条目的顺序也将被保留。

  

[((User1,Password1),(User2,Password2),(User3,Password3)]。

无论使用List还是Dict方法,这完全取决于您存储用户名和密码的使用目的。