我使用我的代码为每个假定的用户编写了一个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来获取密码问题。然后,一旦我输入了相应的密码(并且只有相应的密码),我就应该受到欢迎(我选择使用的用户名)。实际上,该程序在我输入任何用户名后都会立即对我退出,因为似乎该程序不知道如何从用户名提示符处继续操作。
答案 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!!")