在python中引用列表
我有一个关于列表的问题,所以我创建了这个代码作为一个很好的例子,我想创建一个名称列表,这样当我登录时,它可以引用这里列出的名称列表,我不会得到“拒绝访问”。我试着用visualstudio代码来做这件事,但仍然不起作用,有什么办法来纠正这个问题吗?或者如果语句不是这种代码的正确选择在python中引用列表,python,python-3.x,list,Python,Python 3.x,List,我有一个关于列表的问题,所以我创建了这个代码作为一个很好的例子,我想创建一个名称列表,这样当我登录时,它可以引用这里列出的名称列表,我不会得到“拒绝访问”。我试着用visualstudio代码来做这件事,但仍然不起作用,有什么办法来纠正这个问题吗?或者如果语句不是这种代码的正确选择 def name_login(): list_of_names = ["Alice", "Bob", "Apple"] name = input("Name: ") if name in l
def name_login():
list_of_names = ["Alice", "Bob", "Apple"]
name = input("Name: ")
if name in list_of_names:
print("Welcome back %s" % (name))
name_login()
else:
if len(name) > 0:
print("Access Denied")
else:
print("Invalid Input")
欢迎来到StackOverflow 以下是有问题的几行:
如果名称==名称列表:
打印(“欢迎返回%s”%(名称))
elif len(名称)>0和名称!=列出所有名称:
您真正想要的不是检查列表与字符串的相等性(操作符=
),而是检查列表中是否包含字符串
在操作符中使用
以下是一个教程:
UPD 1:而不是=
,您可能希望在
运算符中使用而不是。请参见教程
UPD2:一旦你解决了你的问题,一定要把你的代码提交给。有很多方法可以改进你的代码,我想你会从中受益。想想name==list\u of\u name
:你希望你的输入与你的列表相同吗?我想不是,您需要检查是否包含,这是通过in
操作符完成的
if name in list_of_names:
也
- 在第二个条件中,不需要
名称不在名称列表中,因为它肯定是真的(因为条件1尚未验证)
- 使用while循环,再次请求名称
最后:
def name_login():
list_of_names = ["Alice", "Bob", "Apple"]
while True:
name = input("What is your name: ")
if name in list_of_names:
print("Welcome back %s" % (name))
break
elif len(name):
print("Access Denied")
elif len(name) <= 0:
print("Invalid Input")
def name_login():
姓名列表=[“爱丽丝”、“鲍勃”、“苹果”]
尽管如此:
name=输入(“您的姓名:”)
如果名称在名称列表中:
打印(“欢迎返回%s”%(名称))
打破
elif len(姓名):
打印(“访问被拒绝”)
elif len(名字)试试这个:
def name_login():
list_of_names = ["Alice", "Bob", "Apple"]
while True:
name = input("Name: ")
if len(name) == 0:
print("Invalid Input")
continue
if name in list_of_names:
print("Welcome back %s" % (name))
break
if name not in list_of_names:
print("Access Denied")
continue
name_login()
问题在于您的代码段:
if name == list_of_names:
print("Welcome back %s" % (name))
elif len(name) > 0 and name != list_of_names:
要检查元素(在您的例子中是str
)是否存在于列表中,您需要在Python中的操作符中执行
如果使用=
运算符比较str
和列表
,它将始终返回False
name==list\u of\u name
永远不会是真的,就像苹果永远都不等于苹果篮一样。您希望将名称放在名称列表中
- 这实际上是不够的,因为
input
将读取用户的字符串和最后的换行符,而最后的换行符不存在于任何数组元素中,因此任何输入都不可能匹配。使用strip()
- 类似地,在
elif
中,您可能希望名称不在名称列表中
- 但是,在
elif
中,您知道名称不在名称列表中,因为如果不是这样,它将在if
中被捕获,而不会继续进行elif
,因此测试是多余的len(name)>0本身就足够了
- 但是,由于字符串的长度不能为负,
len(name)>0
相当于len(name)!=0
。在Python中,该表达式恰好与len(name)
具有相同的真值,并且最终是name
(字符串、列表和其他容器如果为空则为假,否则为真)
- 在下一个
elif
中,您不需要检查len(name)len(name)@usr2564301 the==0是的,伟大的。您添加了大量信息
list_of_names = ["Alice", "Bob", "Apple"]
while True:
name = input("Name: ").strip()
if not name:
print("Invalid Input")
elif name in list_of_names:
print("Welcome back %s" % (name))
break
else:
print("Invalid Input")