如何使用存储在列表中的用户输入触发if语句?

时间:2017-02-11 20:29:55

标签: python

所以我正在尝试在python中创建代码以进一步理解语言,并且部分地为了好玩:),无论如何,我正在尝试制作一个时钟进出员工的程序。但是当我输入用户名和密码登录到它并不知道预设的管理员服务时,我感到困惑。登录详细信息。 这是我的代码:主要部分已加星标

**username = ['Admin']
password = ['admin']**

def login():
    print()
    print("Welcome to the Enterprise clock in and clock out system")
    print()
    un = input("Please enter your name: ")
    print()
    pw = input("And password: ")
    **for i in username and password:
            if un == username and pw == password:
                main()**
    else:
        print()
        print("The username or password was incorrect")
        login()

def main():
    print("Welcome to Enterprise")
    print()
    print("What would you like to do?\n")
    ch = input("Choice: ")
    print()
    print("1 - Clock in")
    print("2 - Clock in")
    print("3 - Add new employee")

login()
main()

3 个答案:

答案 0 :(得分:3)

usernamepassword列表unpw字符串,但是你&#39 ;试着比较它们,这没有用。

您可以尝试这样做:

for pair in zip(username, password):
    if (un, pw) == pair: main()

答案 1 :(得分:2)

这里可能更好的方法是使用字典而不是列表。 而不是:

username = ['Admin']
password = ['admin']

做类似的事情:

creds = {'Admin':'admin'}

这样你就不需要循环了,你可以检查:

if creds.has_key(un) and creds[un] == pw:
    #rest of code

has_key方法很重要,因为如果您尝试访问不存在的密钥,则会引发错误。

答案 2 :(得分:0)

您已将usernamepassword放入列表中。因此,将输入(默认为字符串)与列表进行比较,不会相同。

如果你把它放入空闲状态:

var1 = ["Admin"]
var2 = "Admin"
var1 == var2
False

但您也可以将列表编入索引:

var1[0] == var2
True