如何将多个字符串存储为一个变量

时间:2019-06-22 09:04:01

标签: python

我使用我的代码为每个假定的用户编写了一个if和else语句,以确保他们是真实的人。我想知道是否有更有效的方法来做到这一点。我希望代码看起来像第2至7行,但是当前我必须使其看起来像第9-14行。有什么办法可以使2到7行工作?

我已经尝试用单独的if和else语句分隔每个用户,该语句检查该用户是否已经存在,以及他们是否正确分配了该用户的密码。我还尝试过使用列表函数将多个不同的用户存储为一个变量,这样,如果程序检测到这些用户中的任何一个,就会将其移至下一步,但是一旦我这样做,程序就会拒绝识别任何元素列表中的个人。 例如,在代码的第2行中,没有一个用户被识别。仅当我将其单独分开时,才能识别用户blake。

user_name = input ("Hello, user please enter your username!")
if user_name == ["Jake", "Bake"]:
    Password = input("Please enter your password %s" %user_name)
    if Password == ["hello", "notem"]:
        print ("Welcome back %s" %user_name)
    else:
        print ("You are an imposter! Begone!!")
else:
    if user_name == ("Bake"):
        Password = input("Please enter your password %s" %user_name)
        if Password == ("hell"):
           print ("Welcome back %s" %user_name)
        else:
            print ("You are an imposter! Begone!!")  

从2到7行,我希望我可以输入Jake甚至Blake来获取密码问题。然后,一旦我输入了相应的密码(并且只有相应的密码),我就应该受到欢迎(我选择使用的用户名)。实际上,该程序在我输入任何用户名后都会立即对我退出,因为似乎该程序不知道如何从用户名提示符处继续操作。

4 个答案:

答案 0 :(得分:1)

echo limitText(6, '<p>Hello</p>');
// displays:  <p>Hello</p>


echo limitText(2, '<p>Hello</p>');
// displays:  <p>He...</p>

echo limitText(4, '<p>Hello</p>');
// displays:  <p>Hell...</p>

echo limitText(8, '<p>cutie</p> <p>patootie</p>');
// displays:  <p>cutie</p> <p>pat...</p>

检查if user_name == ["Jake", "Bake"]: 是否等于列表user_name

如果要测试检查名称是否在列表中,请使用关键字["Jake", "Bake"]

in

答案 1 :(得分:1)

您的问题是程序会检查用户名是否为列表["Jake", "Bake"],密码是否为列表["hello", "notem"]

正确的代码是:

user_name = input ("Hello, user please enter your username!") if user_name in ["Jake", "Bake"]: Password = input("Please enter your password %s" %user_name) if Password in ["hello", "notem"]: print ("Welcome back %s" %user_name) else: print ("You are an imposter! Begone!!") else: if user_name == ("Bake"): Password = input("Please enter your password %s" %user_name) if Password == ("hell"): print ("Welcome back %s" %user_name) else: print ("You are an imposter! Begone!!")

编辑:您忘记了用户名既不是Jake也不是Bake的情况。

答案 2 :(得分:-1)

正如@DSC先前指出的那样:
您在if语句中检查的是用户提供的输入是否本身就是一个列表。
相反,您应该检查的是用户提供的输入是否为列表内的对象。

另外,请注意使用字典按住{'Username':'Password'}键:如果有多个用户,则值将有助于将用户名与确切的用户密码进行匹配。

users = {'Jake':'hello','Bake':'notem'}

user_name = input ("Hello, Please enter your username: ")

if user_name in users: #Checks whether user exists
    Password = input("Please enter your password %s" %user_name)
    if Password == users[user_name]: #Check for that particular user's password.
        print("Welcome back %s" %user_name)
    else:
        print("You are an imposter! Begone!!")
else:
    print('Sorry, That username doesn't exist.')

这不是最安全的方法,因为它告诉潜在的攻击者他们到底犯了什么错(用户名/密码),但应该做好您的工作。

Also check this,应该使您更进一步。

答案 3 :(得分:-2)

假设您要检查用户名和与该用户名相对应的密码,python提供了称为字典的结构。可能对您有帮助。

userPass = {"Jake": "Hello", "Bake": 'notem'} #dictonary named userPass, "username": "Password"

user_name = input ("Hello, user please enter your username!")
Password = input("Please enter your password %s" %user_name)

if userPass[user_name] == Password:  #userPass[user_name] will return password defined in dictonary
    print ("Welcome back %s" %user_name)
else:
    print ("You are an imposter! Begone!!")